{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regression loss  \n",
    "* MSE\n",
    "* MAE\n",
    "* Huber loss\n",
    "* Los cosh loss\n",
    "* Quantile loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Mean Square Error (MSE/ L2 Loss)\n",
    "$ MSE = \\sum\\limits_{i=1}^n  {(y_i - y_i^p)}^2 $  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def mse(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: mean square error loss\n",
    "    \"\"\"\n",
    "    \n",
    "    return np.sum((true - pred)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10f449e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(100, 10000) \n",
    "pred = np.arange(-10000,10000, 2)\n",
    "\n",
    "loss_mse = [mse(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot \n",
    "ax1.plot(pred, loss_mse)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"MSE Loss vs. Predictions\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Mean Absolute Error (MAE/ L1 loss)\n",
    "$ MAE = \\sum\\limits_{i=1}^n  {|y_i - y_i^p|} $  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def mae(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: mean absolute error loss\n",
    "    \"\"\"\n",
    "    \n",
    "    return np.sum(np.abs(true - pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfAAAAFgCAYAAABEyiulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd4FNfd9vHvTw3RhUBU0XuVBAT3bmNccQEbkTxx8jpxiik2dmzjxA3HccemOE5zEueJEWDcS9x7N6jQi+iiiiJEE2rn/UNDHhkLECDpaLX357r20u7Zmd17FqFbO2dWY845REREJLRE+A4gIiIix04FLiIiEoJU4CIiIiFIBS4iIhKCVOAiIiIhSAUuIiISglTgIhLSzOyfZvb74PoZZrbsOB/nT2Z2V9WmE6k+KnCRIzCzNWZWaGYtDhnPNDNnZp0OGb83GB9yyPhPzKzEzPYccml7mOd1ZtatqrfHh0O2PT947S6tjudyzn3qnOtZyUyfHbLuL51z91dHLpHqoAIXObrVQOrBG2bWH6h/6EJmZsD/ADuA6yp4nC+dc40OuWysrtC1zJfOuUZAHPAMMNvM4g9dyMyiajyZSIhSgYsc3f8CPy53+zrgXxUsdwbQFhgPjDKzmKoOYmYRZvY7M1trZlvN7F9m1jS4L9bM/m1m280sz8y+NbNWwX0/MbNVZrbbzFab2Q8reOy2Zra/fLGaWYqZbTOzaDPrZmYfm9muYGzWseZ3zpUCf6fsF6AuZna2meWY2e1mthn4R/C8lwbv1PPM7AszG3BIpvRgW2YBseXuO9vMcsrdbm9mL5pZbvC6TDez3sCfgFOCvQJ5wbL/3RUf3P65mWWb2Q4ze7X83pJgD8kvzWyFme00s6eCX+CoitdJpDJU4CJH9xXQxMx6m1kkcC3w7wqWuw54DTj4A7s6dhP/JLicA3QBGgHTyz1/U6A90Bz4JbDfzBoCU4GLnHONgVOBzEMfONgb8CVwdbnh0cAc51wRcD/wDtAMSASmHWv44B32z4A9wIpguDUQD3QEbjCzgZSV/C+C7fgz8KqZ1Qt+KXqZsl+q4oHnD8lb/rkigdeBtUAnoB0w0zm3JHhtDu4Riatg3XOBB4FrgDbBY8w8ZLFLgR8AScFyFwbjJ/w6iVSGClykcg6+C78AWApsKH+nmTUARgIzgrKbw/d3o58cvKM8eFl5HDl+CEx2zq1yzu0BJlL2bj8KKKKs8Lo550qcc/Occ/nBeqVAPzOr75zb5JxbdJjHn0EwXRC8oxwVjBE8fkegrXOuwDn3WcUPUaGTg3e6m4PHv9I5t6tctnuccwecc/uBnwN/ds59HWzHs8AB4OTgEg086Zwrcs7NAb49zHMOoWyPyG+cc3uPMfMPgb8759Kdcwcoe51POeSYh4ecc3nOuXXAh0ByMH4ir5NIpanARSrnfyl7N/oTKt59fiVQDLwZ3H4OuMjMEsot85VzLq7cpetx5GhL2bvBg9YCUUCrIOPbwEwz22hmj5hZtHNuL2V7DX4JbDKzN8ys12Eefw5lRdUWOBNwwKfBfbcBBnxjZovM7P8dQ+6D297COXeyc+69cvflOucKyt3uCNxS/pcdyvYqtA0uG9x3z8JU/vUorz2w1jlXfAw5D/rO6xz8srSdsnfxB20ud30fZXtD4MReJ5FKU4GLVIJzbi1lB7NdDLxYwSLXUfYDfF0wl/s8Ze8UUytY9kRspKzgDupA2S8OW4J3pPc55/pQtpv8UoK5e+fc2865CyjbHbwU+GtFD+6cy6Ns9+81lP3CknawLJ1zm51zP3fOtaVs9/Yfq+hI+UNPibgeeOCQX3YaOOfSgE1Au4PzzeVeg4qsBzoc5sC4o52G8TuvczAN0ZxD9rxUpBpfJ5HvUIGLVN71wLnBO9r/MrN2wHmUFWZycEkCHqbio9ErKyY4MO3gJRJIA242s85m1gj4AzDLOVdsZueYWf9guXzKduWWmFkrM7s8KKEDlM0/lxzheWdQVvxX83+7zzGzkWaWGNzcSVkJHulxjtdfgV+a2UlWpqGZXWJmjSmboy8GxplZlJldRdmu8op8Q1nhPxQ8RqyZnRbctwVItMMfaDgD+KmZJZtZPcpe56+dc2uOFr4GXycJcypwkUpyzq10zs2t4K7/ATKdc+8E7742O+c2U3bg2AAz6xcsd/Co5/KXHxzhKRcB+8tdfkrZwV3/C3xC2R6BAmBssHxrynaB5wNLgI8pO9guAriFsneVO4CzgF8f4XlfBbpT9q4+q9z4D4CvzWxPsMx459xqgGBX8feObD8ewWv8c8oOztsJZFM2dYFzrhC4Kri9k7KpgYr2iOCcKwEuA7oB64CcYHmADyh7fTeb2bYK1n0fuAt4gbJfArpSdjxAZRz2dRKpSvbdqSQREREJBXoHLiIiEoJU4CIiIiFIBS4iIhKCVOAiIiIhKOxOHNCiRQvXqVMn3zFEREQqNG/evG3OuYSjLRd2Bd6pUyfmzq3ok0AiIiL+mdnh/rrgd2gXuoiISAhSgYuIiIQgFbiIiEgIUoGLiIiEIBW4iIhICFKBi4iIhCAVuIiISAhSgYuIiIQgFbiIiEgIUoGLiIiEIBX4ccrbV8jmXQW+Y4iISJiqtgI3s7+b2VYzW1huLN7M3jWzFcHXZsG4mdlUM8s2s/lmNrDcOtcFy68ws+vKjQ8yswXBOlPNzKprWw5VUuq49s9f8evn5lFUUlpTTysiIvJf1fkO/J/AsEPG7gDed851B94PbgNcBHQPLjcAT0NZ4QP3ACcBQ4B7DpZ+sMwN5dY79LmqTWSEceO53Uhfl8fkd5fX1NOKiIj8V7UVuHPuE2DHIcPDgWeD688CV5Qb/5cr8xUQZ2ZtgAuBd51zO5xzO4F3gWHBfU2cc1865xzwr3KPVSMuT2pL6pD2PP3RSj5ZnluTTy0iIlLjc+CtnHObAIKvLYPxdsD6csvlBGNHGs+pYLxCZnaDmc01s7m5uVVXtndf2pcerRoxYXYmW/M1Hy4iIjWnthzEVtH8tTuO8Qo55/7inBvsnBuckHDUc6RXWv2YSJ4aPZA9B4q5aVYmJaWHjSAiInWUr5/9NV3gW4Ld3wRftwbjOUD7csslAhuPMp5YwXiN696qMZMu78cXK7fzxw+zfUQQERFP9hwo5pKpn/Jies7RF65iNV3grwIHjyS/Dnil3PiPg6PRTwZ2BbvY3waGmlmz4OC1ocDbwX27zezk4OjzH5d7rBo3cnAiw5Pb8sR7y/lm9aHT/iIiUhc557jr5YUs37KbtnH1a/z5q/NjZGnAl0BPM8sxs+uBh4ALzGwFcEFwG+BNYBWQDfwV+DWAc24HcD/wbXCZFIwB/Ar4W7DOSuA/1bUtR2NmPHBlfzrEN2BcWgY79hb6iiIiIjVkzrwcXsrYwPjzenByl+Y1/vxWdhB3+Bg8eLCbO3dutTz2wg27uOqPX3BG9xb87brB1OBH00VEpAZlb93NZdM+J7l9HP/+2UlERlTdz3szm+ecG3y05WrLQWx1Qr92Tbnz4l68v3Qrz3y22nccERGpBgVFJYyZkUGDmEieHJVcpeV9LFTgVey6UzsxtE8rHn5rKfNz8nzHERGRKjbp9cUs3bybx69JolWTWG85VOBVzMx4ZMQAWjaOZcyMDPILinxHEhGRKvLG/E3M+HodvzirC2f3bHn0FaqRCrwaxDWIYWpqMhvy9jPxxQWE23EGIiJ10brt+7jjhfmkdIjj1qE9fcdRgVeXQR3juWVoD96Yv4m0b9YffQUREam1CotLGZuWjhlMHZVCdKT/+vSfoA775ZldOaN7C+57bRFLN+f7jiMiIsfpkbeWkpWzi0dGDKB9fAPfcQAVeLWKiDAmX5NMk/rRjJmRwb7CYt+RRETkGH2wdAt/+2w1Pz6lI8P6tfEd579U4NUsoXE9nrw2mZW5e7jnlUW+44iIyDHYtGs/t8zOok+bJtx5cW/fcb5DBV4DTuvWgjHndOP5eTm8nLHBdxwREamE4pJSxqdlcqC4lOmjU4iNjvQd6TtU4DVk/HndGdIpnt++tIDV2/b6jiMiIkcx9f0VfLNmB7+/oh9dEhr5jvM9KvAaEhUZwZTUZKKjIrjxuXQKikp8RxIRkcP4Insb0z7MZsSgRK4amHj0FTxQgdegNk3r89iIJBZvyufBN5f4jiMiIhXYtucA42dl0qVFQyYN7+s7zmGpwGvY+X1acf3pnXn2y7W8tXCz7zgiIlJOaaljwuwsdu0vYvrogTSIifId6bBU4B7cPqwXAxKbctucLHJ27vMdR0REAn/+ZBWfLM/l7kv70LtNE99xjkgF7kFMVATTUlModTAuLYOiklLfkUREwt68tTt57J1lXNK/DT88qYPvOEelAvekY/OGPHhVf9LX5fH4O8t9xxERCWu79hUxLi2DtnGxPHh1f8z8nCL0WKjAPbosqS2pQ9rzp49X8vHyXN9xRETCknOO217IYkt+AdNSB9IkNtp3pEpRgXt296V96dmqMRNmZbI1v8B3HBGRsPOvL9fy9qIt3D6sF8nt43zHqTQVuGf1YyKZPjqFvYXF3DQrk5JSnXpURKSmLNywiwfeWMK5vVpy/emdfcc5JirwWqB7q8ZMurwfX6zczlMfZvuOIyISFvYcKGZsWgbxDWN4bGQSERG1f967PBV4LTFycCLDk9vy5HvL+XrVdt9xRETqNOccv3tpAWu372XKqGTiG8b4jnTMVOC1hJnxwJX96RDfgPEzM9mxt9B3JBGROuv5eTm8nLmR8ef14KQuzX3HOS4q8FqkUb0opo8eyI69hdz6fBbOaT5cRKSqZW/dzT2vLOKULs0Zc24333GOmwq8lunXril3XtyLD5Zu5ZnPVvuOIyJSpxQUlXDjcxk0iIlkyqhkIkNs3rs8FXgtdN2pnRjapxUPv7WUrPV5vuOIiNQZk15fzLItu3n8miRaNon1HeeEqMBrITPjkREDaNk4ljFp6eQXFPmOJCIS8l6fv5EZX6/jF2d14eyeLX3HOWEq8FoqrkEMU1OT2ZhXwMQXF2g+XETkBKzbvo+JLywgpUMctw7t6TtOlVCB12KDOsZzy9AevDF/E2nfrPcdR0QkJBUWlzImLR0zmJaaQnRk3ai+urEVddgvz+zKGd1bcN9ri1i6Od93HBGRkPPIW0uZn7OLR0YMILFZA99xqowKvJaLiDAmX5NMk/rR3PhcOvsKi31HEhEJGe8v2cLfPlvNj0/pyLB+bXzHqVIq8BCQ0LgeT16bzKpte7nnlUW+44iIhIRNu/Zzy/NZ9GnThDsv7u07TpVTgYeI07q1YMw53Xh+Xg4vZeT4jiMiUqsVl5QyPi2TwuJSpo9OITY60nekKqcCDyHjz+vOkE7x/PalhazK3eM7johIrTX1/RV8s2YHD1zZjy4JjXzHqRYq8BASFRnBlNRk6kVFMGZGBgVFJb4jiYjUOp9nb2Pah9mMGJTIlSmJvuNUGxV4iGnTtD6PjUxi8aZ8Hnxzie84IiK1Su7uA9w0K5MuLRoyaXhf33GqlQo8BJ3XuxXXn96ZZ79cy1sLN/uOIyJSK5SWOibMziR/fxFP/XAgDWKifEeqVirwEHX7sF4MSGzKbXOyWL9jn+84IiLe/fmTVXy6Yht3X9aHXq2b+I5T7VTgISomKoJpqSk4B+NmZlBUUuo7koiIN/PW7uCxd5ZxSf82jB7SwXecGqECD2Edmzfkwav7k7Euj8ffWe47joiIF3n7ChmXlknbuFgevLo/ZqF7itBjoQIPcZcOaEvqkA786eOVfLw813ccEZEa5Zzjtjnz2bq7gOmpA2kSG+07Uo1RgdcB91zWh56tGjNhViZb8gt8xxERqTH/+nIt7yzewu3DepHUPs53nBqlAq8DYqMjmT46hX2FJdw0M5OSUp16VETqvoUbdvHAG0s4t1dLrj+9s+84NU4FXkd0b9WY+4b35ctV23nqw2zfcUREqtWeA8WMmZFOfMMYHhuZFDbz3uWpwOuQkYMSuSK5LU++t5yvV233HUdEpFo45/jdSwtYt2MfU0YlE98wxnckL7wUuJndbGaLzGyhmaWZWayZdTazr81shZnNMrOYYNl6we3s4P5O5R5nYjC+zMwu9LEttYmZ8fsr+9OxeUPGzcxgx95C35FERKrc8/NyeDlzIzed34OTujT3HcebGi9wM2sHjAMGO+f6AZHAKOBh4AnnXHdgJ3B9sMr1wE7nXDfgiWA5zKxPsF5fYBjwRzOre6ebOUaN6kUxLTWFnXuLuPX5LJzTfLiI1B0rtuzm7lcWcmrX5tx4TjffcbzytQs9CqhvZlFAA2ATcC4wJ7j/WeCK4Prw4DbB/edZ2WTHcGCmc+6Ac241kA0MqaH8tVq/dk357SW9+WDpVp75bLXvOCIiVaKgqIQxMzJoGBPFk9cmExkRfvPe5dV4gTvnNgCPAesoK+5dwDwgzzlXHCyWA7QLrrcD1gfrFgfLNy8/XsE632FmN5jZXDObm5sbHp+V/vEpHbmwbysefmspmevzfMcRETlh9722mGVbdjP52mRaNon1Hcc7H7vQm1H27rkz0BZoCFxUwaIH9/1W9CuWO8L49wed+4tzbrBzbnBCQsKxhw5BZsYjVyfRsnEsY9PSyS8o8h1JROS4vZa1kbRv1vHLs7pyVo/w+Dl+ND52oZ8PrHbO5TrnioAXgVOBuGCXOkAisDG4ngO0BwjubwrsKD9ewToCNG0QzdTUFDbmFTDxhQWaDxeRkLR2+14mvriAgR3iuGVoD99xag0fBb4OONnMGgRz2ecBi4EPgRHBMtcBrwTXXw1uE9z/gStroleBUcFR6p2B7sA3NbQNIWNQx2bcOrQnbyzYxIxv1vmOIyJyTAqLSxmblkGEwdTUFKIj9enng3zMgX9N2cFo6cCCIMNfgNuBCWaWTdkc9zPBKs8AzYPxCcAdweMsAmZTVv5vATc650pqcFNCxi/O7MKZPRKY9NpilmzK9x1HRKTSHn5rKfNzdvHIiCQSmzXwHadWsXDbrTp48GA3d+5c3zFq3LY9B7hoyqc0iY3itbGn1/kT3YtI6Htv8RZ+9q+5XHdKR+4b3s93nBpjZvOcc4OPtpz2RYSJFo3qMeXaZFZt28vdryzyHUdE5Ig25u3n1jlZ9GnThIkX9/Ydp1ZSgYeRU7u1YOw53ZgzL4eXMnJ8xxERqVBxSSnjZ2ZQWFzK9NEpxEaH/d/oqpAKPMyMO687QzrF89uXFrIqd4/vOCIi3zPl/RV8u2Ynf7iyP10SGvmOU2upwMNMVGQEU1KTqRcVwY0zMigo0nF/IlJ7fJ69jekfZpednCmlwr/NJQEVeBhq07Q+j1+TxJJN+fzhzSW+44iIAJC7+wDjZ2bSNaER9w3v6ztOracCD1Pn9mrFz07vzL++XMtbCzf5jiMiYa601DFhdia7C4qYPjpFn5SpBBV4GLttWC+SEpty25z5rN+xz3ccEQljf/pkJZ+u2MY9l/WlV+smvuOEBBV4GIuJimBa6kCcg3EzMygqKfUdSUTC0Ly1O3j8neVcMqANqUPaH30FAVTgYa9D8wY8eHV/Mtbl8dg7y3zHEZEwk7evkHFpmbSLq8+DV/Wn7C9sS2WowIVLB7Rl9Ekd+PPHq/ho2VbfcUQkTDjnuG3OfLbuLmBaagpNYqN9RwopKnAB4O5L+9CrdWNumZ3FlvwC33FEJAw8+8Ua3lm8hduH9SKpfZzvOCFHBS4AxEZHMn10CvsKS7hpZiYlpeH1N/JFpGYt3LCLP7y5lPN6teT60zv7jhOSVODyX91aNmbS8L58uWo70z/I9h1HROqoPQeKGTMjnfiGMTw6Mknz3sdJBS7fMWJQIlemtGPK+8v5atV233FEpI5xzvHblxawbsc+pqamEN8wxnekkKUCl+8wM+6/oh8dmzdk/MwMtu854DuSiNQhz8/N4ZXMjdx8fg+GdI73HSekqcDlexrVi2L66BR27i3i1uezKNV8uIhUgRVbdnP3qws5tWtzfn1ON99xQp4KXCrUt21Tfndpbz5clsszn632HUdEQtz+whLGzMigYUwUT16bTGSE5r1PlApcDut/Tu7IhX1b8fBbS8lcn+c7joiEsEmvL2LZlt1MvjaZlk1ifcepE1TgclhmxiNXJ9GqSSxj09LZtb/IdyQRCUGvZW0k7Zv1/OrsrpzVI8F3nDpDBS5H1LRBNFNTU9iYV8DEF+fjnObDRaTy1m7fy8QXFzCwQxwTLujhO06dogKXoxrUsRm/ubAnby7YzHNfr/MdR0RCxIHisnnvCIOpqSlER6pyqpJeTamUG87owpk9Epj0+mKWbMr3HUdEQsDD/1nGgg27eHRkEonNGviOU+eowKVSIiKMydckEVc/mjEz0tl7oNh3JBGpxd5bvIW/f76an5zaiQv7tvYdp05SgUultWhUjyevTWbVtr3c/coi33FEpJbamLefW+dk0bdtEyZe3Mt3nDpLBS7H5NRuLRh7TjdeSM/hxfQc33FEpJYpLill/MwMiopLmT56IPWiIn1HqrNU4HLMxp3XnSGd4/ndywtZmbvHdxwRqUWefG8F367ZyQNX9qdzi4a+49RpKnA5ZlGREUwdlUK9qAjGzMigoKjEdyQRqQU+W7GNpz7K5prBiVyR0s53nDpPBS7HpXXTWB6/Joklm/J54I0lvuOIiGe5uw9w06xMuiY04t7L+/qOExZU4HLczu3Vip+d3pn//Wot/1mwyXccEfGktNQxYXYmuwuKeGr0QBrERPmOFBZU4HJCbhvWi6TEptz2wnzW79jnO46IePD0xyv5dMU27rmsLz1bN/YdJ2yowOWExERFMC11IDgYm5ZBUUmp70giUoPmrtnB5HeXc+mANqQOae87TlhRgcsJ69C8AQ9dPYDM9Xk89vYy33FEpIbk7StkXFoG7eLq8+BV/THTKUJrkgpcqsQlA9ow+qQO/PmTVXy4bKvvOCJSzZxz/GbOfHL3HGD66BQax0b7jhR2VOBSZe6+tA+9WjfmltlZbMkv8B1HRKrRP79Yw7uLt3D7sF4MSIzzHScsqcClysRGRzJ99ED2F5Zw08xMSkp16lGRumjhhl08+OZSzuvVkutP7+w7TthSgUuV6tayEZOG9+XLVduZ/kG27zgiUsX2HChmzIx0mjeK4bGRSZr39kgFLlVuxKBErkxpx5T3l/PVqu2+44hIFXHOceeLC1i3Yx9TRqXQrGGM70hhTQUuVc7MuP+KfnRq3pDxMzPYvueA70giUgVmz13Pq1kbufn8HgzpHO87TthTgUu1aFQvimmjU9i5r4hbn8+iVPPhIiFt+Zbd3PPqIk7r1pxfn9PNdxxBBS7VqG/bpvzukt58uCyXZz5b7TuOiByn/YUljJmRTqN6UTxxbTKREZr3rg1U4FKt/ufkjlzYtxUPv7WUjHU7fccRkeMw6fVFLN+yh8nXJNOycazvOBJQgUu1MjMeuTqJVk1iGZuWwa79Rb4jicgxeDVrI2nfrOdXZ3flzB4JvuNIOSpwqXZNG0QzbXQKm3cVMPHF+Tin+XCRULBm217ufHEBgzo2Y8IFPXzHkUN4KXAzizOzOWa21MyWmNkpZhZvZu+a2Yrga7NgWTOzqWaWbWbzzWxguce5Llh+hZld52NbpHIGdmjGrRf25M0Fm3nu63W+44jIURwoLmFsWgaREcbU1BSiI/V+r7bx9S8yBXjLOdcLSAKWAHcA7zvnugPvB7cBLgK6B5cbgKcBzCweuAc4CRgC3HOw9KV2uuGMLpzZI4FJry9m8cZ833FE5Age/s8yFmzYxSMjBtAurr7vOFKBGi9wM2sCnAk8A+CcK3TO5QHDgWeDxZ4FrgiuDwf+5cp8BcSZWRvgQuBd59wO59xO4F1gWA1uihyjiAhj8jVJxNWPZkxaOnsPFPuOJCIVeHfxFv7++Wp+cmonLuzb2nccOQwf78C7ALnAP8wsw8z+ZmYNgVbOuU0AwdeWwfLtgPXl1s8Jxg43/j1mdoOZzTWzubm5uVW7NXJMWjSqx5Ojklm9bS93v7LIdxwROcTGvP38Zk4Wfds2YeLFvXzHkSPwUeBRwEDgaedcCrCX/9tdXpGKPnDojjD+/UHn/uKcG+ycG5yQoKMofTu1awvGntudF9JzeGFeju84IhIoLillXFoGRcWlTB89kHpRkb4jyRH4KPAcIMc593Vwew5lhb4l2DVO8HVrueXbl1s/Edh4hHEJAePO7caQzvHc9cpCVubu8R1HRIAn31vB3LU7+cNV/encoqHvOHIUNV7gzrnNwHoz6xkMnQcsBl4FDh5Jfh3wSnD9VeDHwdHoJwO7gl3sbwNDzaxZcPDa0GBMQkBUZARTR6VQLyqCG59Lp6CoxHckkbD22YptPPVRNtcMTmR4coWzkVLL+DoKfSzwnJnNB5KBPwAPAReY2QrgguA2wJvAKiAb+CvwawDn3A7gfuDb4DIpGJMQ0bppLJOvSWbp5t088MYS33FEwlbu7gPcNCuTrgmNuPfyvr7jSCVF+XhS51wmMLiCu86rYFkH3HiYx/k78PeqTSc16ZxeLfn5GZ3566erObVrcy7q38Z3JJGwUlrqmDA7k90FRTz3s5NoEOOlFuQ46JP54t1vLuxFUvs4bnthPut37PMdRySsPP3xSj5dsY17L+9Lz9aNfceRY6ACF+9ioiKYnpoCwNi0DIpKSj0nEgkPc9fsYPK7y7l0QBtG/aD90VeQWkUFLrVC+/gGPHz1ADLX5/HY28t8xxGp8/L2FTIuLYN2cfV58Kr+mOkUoaFGBS61xsX92/DDkzrw509W8eGyrUdfQUSOi3OOW5+fT+6eA0wfnULj2GjfkeQ4qMClVrnr0j70at2YW2ZnsXlXge84InXSP79Yw3tLtnDHRb0ZkBjnO44cJxW41Cqx0ZFMHz2Q/YUl3DQrg5JSnXpUpCotyNnFH95cwvm9W/L/TuvkO46cABW41DrdWjbi/iv68dWqHUz7YIXvOCJ1xu6CIsakpdOiUT0eHZGkee8QpwKXWmnEoESuSmnH1PdX8OXK7b7jiIQ85xy/fWkhOTv3MzU1hWYNY3xHkhOkApda6/4r+tGpeUPGz8xg+54DvuOIhLTZc9fzatZGbj5av/w9AAAgAElEQVS/Oz/oFO87jlQBFbjUWg3rRTFtdAp5+4u45fksSjUfLnJclm/ZzT2vLuK0bs351dndfMeRKqICl1qtb9um3HVJbz5alsvfPlvlO45IyNlfWMKNz6XTqF4UT1ybTGSE5r3rikoVuJl1NbN6wfWzzWycmemzB1IjfnRyRy7q15pH3lpGxrqdvuOIhJT7XltEdu4enrg2mZaNY33HkSpU2XfgLwAlZtYNeAboDMyotlQi5ZgZD109gFZNYhmblsGu/UW+I4mEhFcyNzDz2/X86qyunNE9wXccqWKVLfBS51wxcCXwpHPuZkCnjZIa07R+NNNGp7B5VwF3vDCfspPUicjhrNm2lztfXMCgjs2YcEEP33GkGlS2wIvMLBW4Dng9GNPf3pMaNbBDM35zYU/+s3Az//56ne84IrXWgeISxqSlExUZwdTUFKIidbhTXVTZf9WfAqcADzjnVptZZ+Df1RdLpGI/P6MLZ/dM4P7XF7N4Y77vOCK10kP/WcrCDfk8OmIA7eLq+44j1aRSBe6cW+ycG+ecSzOzZkBj59xD1ZxN5HsiIozHRyYRVz+aMTPS2Xug2HckkVrl3cVb+Mfna/jJqZ0Y2re17zhSjSp7FPpHZtbEzOKBLOAfZja5eqOJVKx5o3pMGZXCmu17ueuVhb7jiNQaG/L2c+vzWfRr14SJF/fyHUeqWWV3oTd1zuUDVwH/cM4NAs6vvlgiR3ZK1+aMPbc7L6Zv4IV5Ob7jiHhXXFLK+LQMiktKmZY6kHpRkb4jSTWrbIFHmVkb4Br+7yA2Ea/GndedkzrHc9crC8neusd3HBGvnnhvOXPX7uQPV/Wnc4uGvuNIDahsgU8C3gZWOue+NbMugE4TJV5FRhhTRqUQGx3JmBnpFBSV+I4k4sWnK3L540cruXZwe4Ynt/MdR2pIZQ9ie945N8A596vg9irn3NXVG03k6Fo3jeXxkUks3byb37+x2HcckRq3dXcBN8/KpFtCI+69vK/vOFKDKnsQW6KZvWRmW81si5m9YGaJ1R1OpDLO6dWSG87swr+/Wsd/FmzyHUekxpSWOibMymJ3QTHTRw+kfozmvcNJZXeh/wN4FWgLtANeC8ZEaoVbh/YkqX0ct70wn/U79vmOI1Ijnv54JZ9lb+O+y/vSs3Vj33GkhlW2wBOcc/9wzhUHl38C+sO6UmvEREUwPTUFgDFpGRQWl3pOJFK9vl2zg8nvLueypLZc+4P2vuOIB5Ut8G1m9iMziwwuPwK2V2cwkWPVPr4BD189gKz1eTz2zjLfcUSqzc69hYxLyyCxWX3+cGU/zHSK0HBU2QL/f5R9hGwzsAkYQdmfVxWpVS7u34YfndyBv3yyig+XbfUdR6TKOef4zZz5bNtzgGmpKTSO1WkpwlVlj0Jf55y73DmX4Jxr6Zy7grI/6iJS6/zukj70at2YW2ZnsXlXge84IlXqH5+v4b0lW5h4UW8GJMb5jiMencgpaiZUWQqRKhQbHcn00QPZX1jC+JkZlJTq1KNSNyzI2cWD/1nC+b1b8dPTOvmOI56dSIFr0kVqrW4tG/H7K/rx9eodTH1ff3NIQt/ugiLGpKXTolE9Hh0xQPPeckIFrrc1UqtdPSiRqwa2Y9oHK/hypY65lNDlnOPOlxaSs3M/U1NTaNYwxnckqQWOWOBmttvM8iu47KbsM+Eitdr9w/vRqUVDxs/MYPueA77jiByXWd+u57WsjUy4oAc/6BTvO47UEkcscOdcY+dckwoujZ1zUTUVUuR4NawXxfTUgeTtL2LC7CxKNR8uIWb5lt3c+9oiTu/Wgl+d1dV3HKlFTmQXukhI6NO2CXdd0puPl+fy109X+Y4jUmn7C0u48bl0GtWLYvK1SUREaN5b/o8KXMLCj07uyEX9WvPo28tIX7fTdxyRSrn31UVk5+7hiWuTadk41nccqWVU4BIWzIyHrh5A66axjJ2Rwa59Rb4jiRzRK5kbmDV3Pb8+uytndNdfrpbvU4FL2GhaP5ppqSlsyS/g9hfm45zmw6V2WrNtL3e+uIDBHZtx8/k9fMeRWkoFLmElpUMzfnNhT95atJl/f7XWdxyR7zlQXMKYtHSiIiOYkppCVKR+TEvF9J0hYefnZ3Th7J4J3P/GEhZt3OU7jsh3PPjmUhZuyOexkUm0i6vvO47UYipwCTsREcbjI5No1iCasTMy2Hug2HckEQDeWbSZf36xhp+e1okL+rTyHUdqORW4hKXmjerx5LUprNm+l7teXug7jggb8vbzmznz6deuCXdc1Mt3HAkBKnAJW6d0bc7Yc7vzYsYG5szL8R1HwlhRSSnj0spOvDM9dSD1oiJ9R5IQoAKXsDbuvO6c3CWeu15eSPbWPb7jSJh64t3lzFu7kweuLPvTvyKV4a3AzSzSzDLM7PXgdmcz+9rMVpjZLDOLCcbrBbezg/s7lXuMicH4MjO70M+WSCiLjDCmjEqhfkwkY2akU1BU4juShJlPV+Ty9McrGfWD9gxPbuc7joQQn+/AxwNLyt1+GHjCOdcd2AlcH4xfD+x0znUDngiWw8z6AKOAvsAw4I9mpv1OcsxaNYnl8WuSWLp5N79/Y7HvOBJGtu4u4OZZmXRv2Yh7LuvrO46EGC8FbmaJwCXA34LbBpwLzAkWeRa4Irg+PLhNcP95wfLDgZnOuQPOudVANjCkZrZA6ppzerbkhjO78O+v1vHG/E2+40gYKCl13Dwrkz0Hipk+eiD1Y/T+Q46Nr3fgTwK3AaXB7eZAnnPu4Od5coCD+5LaAesBgvt3Bcv/d7yCdUSO2a1De5LcPo47XpjP+h37fMeROu7pj7L5PHs7917Wlx6tGvuOIyGoxgvczC4Ftjrn5pUfrmBRd5T7jrTOoc95g5nNNbO5ubm5x5RXwkdMVATTUlPAYExaBoXFpUdfSeQ4fLtmB5PfXc7lSW259gftfceREOXjHfhpwOVmtgaYSdmu8yeBODM7eI7xRGBjcD0HaA8Q3N8U2FF+vIJ1vsM59xfn3GDn3OCEBJ0UQA6vfXwDHrl6AFnr83jsnWW+40gdtHNvIePSMmgf34AHruxH2YygyLGr8QJ3zk10ziU65zpRdhDaB865HwIfAiOCxa4DXgmuvxrcJrj/A1d2FopXgVHBUeqdge7ANzW0GVKHXdS/DT86uQN/+WQVHyzd4juO1CHOOX4zJ4ttew4wPXUgjWOjfUeSEFabPgd+OzDBzLIpm+N+Jhh/BmgejE8A7gBwzi0CZgOLgbeAG51z+gyQVInfXdKHXq0bc8vsLDbvKvAdR+qIv3++hveWbGXiRb3pn9jUdxwJcRZup1QcPHiwmzt3ru8YEgJW5u7hsmmf0b9dU2b8/GQiI7SrU47f/Jw8rn76C87q0ZK//niQdp3LYZnZPOfc4KMtV5vegYvUKl0TGnH/8H58vXoHU99f4TuOhLDdBUWMTcsgoVE9Hhs5QOUtVUIFLnIEVw9K5KqB7Zj6wQq+WLnNdxwJQc45Jr64gJyd+5mamkJcgxjfkaSOUIGLHMX9w/vRuUVDbpqZybY9B3zHkRAz89v1vD5/ExMu6MHgTvG+40gdogIXOYqG9aJ4avRA8vYXccvsLEpLw+u4ETl+yzbv5t5XF3F6txb86qyuvuNIHaMCF6mE3m2acNelffh4eS5//XSV7zgSAvYXljBmRjqNY6OZfG0SEToIUqqYClykkn50Ugcu6teaR99eRvq6nb7jSC1376uLyM7dw5PXJtOycazvOFIHqcBFKsnMeOjqAbRuGsvYGRns2lfkO5LUUq9kbmDW3PX8+uyunN69he84UkepwEWOQdP60UwfPZAt+QXc/sJ8wu3vKMjRrd62lztfXMDgjs24+fwevuNIHaYCFzlGye3juG1YT95atJl/f7XWdxypRQ4UlzA2LZ3oqAimpqYQFakfsVJ99N0lchx+dnoXzu6ZwP2vL2HRxl2+40gt8eCbS1m4IZ9HRyTRNq6+7zhSx6nARY5DRITx+MgkmjWMZuyMDPYeKD76SlKnvb1oM//8Yg0/Pa0TF/Rp5TuOhAEVuMhxat6oHlNGpbBm+17uenmh7zji0Ya8/dw2Zz792jXhjot6+Y4jYUIFLnICTu7SnHHndefFjA3MmZfjO454UFRSyri0DEpKHdNTB1IvKtJ3JAkTKnCREzT23O6c3CWeu15eSPbW3b7jSA174t3lzFu7kz9c1Z9OLRr6jiNhRAUucoIiI4wpo1KoHxPJmBkZFBTptPTh4pPlufzxo5WM+kF7Lk9q6zuOhBkVuEgVaNUklsnXJLF0827uf32x7zhSA7buLmDC7Ex6tGrEPZf19R1HwpAKXKSKnN2zJb84swvPfb2ON+Zv8h1HqlFJqePmWZnsOVDM9NEDqR+jeW+peSpwkSp064U9SW4fxx0vzGfd9n2+40g1efqjbD7P3s59l/elR6vGvuNImFKBi1Sh6MgIpqWmgMHYtHQKi0t9R5Iq9s3qHUx+dzmXJ7XlmsHtfceRMKYCF6li7eMb8OiIAWTl7OLRt5f6jiNVaOfeQsbPzKB9fAMeuLIfZjpFqPijAhepBsP6teF/Tu7IXz9dzQdLt/iOI1XAOcetz2exfU8hT40eSOPYaN+RJMypwEWqyW8v6U3vNk24ZXYWm3bt9x1HTtDfP1/D+0u3MvHiXvRr19R3HBEVuEh1iY2OZProFA4UlzJ+ZibFJZoPD1Xzc/J46D9LuKBPK35yaiffcUQAFbhIteqa0IjfX9GPb1bvYOoH2b7jyHHILyhizIwMEhrV49ERAzTvLbWGClykml01MJGrByYy7YMVfJG9zXccOQbOOe58cQEb8vYzNTWFuAYxviOJ/JcKXKQGTBrel84tGjJ+Vibb9hzwHUcqaea363l9/iYmXNCDwZ3ifccR+Q4VuEgNaFgviqdGD2TX/iImzM6itNT5jiRHsXRzPve+uogzurfgV2d19R1H5HtU4CI1pHebJtx9aR8+WZ7LXz5d5TuOHMG+wmLGzMigcWw0k69JJiJC895S+6jARWrQD0/qwMX9W/PY28uYt3an7zhyGPe+uoiVuXt48tpkEhrX8x1HpEIqcJEaZGY8eNUAWjeNZVxaBrv2FfmOJId4OWMDs+fmcOPZ3Ti9ewvfcUQOSwUuUsOa1o9m+uiBbMkv4LYXsnBO8+G1xepte/ntSwv4Qadm3HR+d99xRI5IBS7iQXL7OG4f1ou3F23hf79a6zuOAAeKSxgzI53oqAimjEohKlI/HqV203eoiCfXn96Zc3om8PvXl7Bo4y7fccLeg28uZdHGfB4bkUTbuPq+44gclQpcxJOICOPxa5Jp1jCaMTMy2HOg2HeksPX2os3884s1/L/TOnN+n1a+44hUigpcxKP4hjFMGZXC2u17uevlhZoP9yBn5z5+83wW/ds15faLevqOI1JpKnARz07u0pzx5/XgpYwNzJmX4ztOWCkqKWVcWgalDqaPTqFeVKTvSCKVpgIXqQXGnNuNU7o05+5XFpG9dbfvOGFj8rvLSV+Xxx+u6k/H5g19xxE5JipwkVogMsJ4clQyDWIiufG5DAqKSnxHqvM+Xp7L0x+tJHVIey5Paus7jsgxU4GL1BKtmsTy+DVJLNuym0mvL/Ydp07bml/AhFmZ9GjViLsv7es7jshxUYGL1CJn92zJL87qwoyv1/HG/E2+49RJJaWOm2ZlsrewmKdGD6R+jOa9JTSpwEVqmVuH9iSlQxx3vDCfddv3+Y5T5/zxw2y+WLmdSZf3o3urxr7jiBw3FbhILRMdGcHUUSmYwZi0dAqLS31HqjO+Wb2DJ95bzvDktowcnOg7jsgJUYGL1ELt4xvwyIgBzM/ZxSNvLfUdp07YsbeQcWkZdIhvwANX9sdMpwiV0KYCF6mlhvVrw49P6cjfPlvNB0u3+I4T0pxz/Ob5LHbsLWT66IE0qhflO5LICavxAjez9mb2oZktMbNFZjY+GI83s3fNbEXwtVkwbmY21cyyzWy+mQ0s91jXBcuvMLPranpbRKrbnRf3pk+bJtwyO4tNu/b7jhOynvlsNe8v3cqdF/eiX7umvuOIVAkf78CLgVucc72Bk4EbzawPcAfwvnOuO/B+cBvgIqB7cLkBeBrKCh+4BzgJGALcc7D0ReqK2OhIpo9O4UBxKePTMiku0Xz4scpan8fDby1laJ9WXHdqJ99xRKpMjRe4c26Tcy49uL4bWAK0A4YDzwaLPQtcEVwfDvzLlfkKiDOzNsCFwLvOuR3OuZ3Au8CwGtwUkRrRJaERv7+iH9+s2cHU91f4jhNS8guKGJOWTsvGsTwyYoDmvaVO8ToHbmadgBTga6CVc24TlJU80DJYrB2wvtxqOcHY4cYrep4bzGyumc3Nzc2tyk0QqRFXDUxkxKBEpn2YzRfZ23zHCQnOOSa+uICNeQVMTU0mrkGM70giVcpbgZtZI+AF4CbnXP6RFq1gzB1h/PuDzv3FOTfYOTc4ISHh2MOK1AKThvelS4uGjJ+VybY9B3zHqfXSvlnPG/M3ccvQHgzqGO87jkiV81LgZhZNWXk/55x7MRjeEuwaJ/i6NRjPAdqXWz0R2HiEcZE6qUFMFNNHD2TX/iJunpVJaalOPXo4Szfnc99rizijewt+eWZX33FEqoWPo9ANeAZY4pybXO6uV4GDR5JfB7xSbvzHwdHoJwO7gl3sbwNDzaxZcPDa0GBMpM7q3aYJd1/ah09XbOPPn6zyHadW2ldYzI3PpdOkfjSTr0kmIkLz3lI3+fgw5GnA/wALzCwzGLsTeAiYbWbXA+uAkcF9bwIXA9nAPuCnAM65HWZ2P/BtsNwk59yOmtkEEX9+eFIHvly5ncfeWcaQzvEM6qgPX5R3zyuLWLVtL/++/iQSGtfzHUek2phz4bUbbvDgwW7u3Lm+Y4ickPyCIi6Z+imlpfDmuDNo2iDad6Ra4eWMDdw0K5Ox53bjlqE9fccROS5mNs85N/hoy+kvsYmEoCax0UxLHciW/AJueyGLcPtFvCKrt+3lty8tYEineMaf1913HJFqpwIXCVHJ7eO4fVgv3l60hX99udZ3HK8Kikq48bl0oqMimJKaTFSkfrRJ3afvcpEQdv3pnTm3V0seeGMJCzfs8h3HmwffXMLiTfk8NiKJNk3r+44jUiNU4CIhLCLCeGxkEvENYxiblsGeA8W+I9W4txZu5tkv13L96Z05v08r33FEaowKXCTExTeMYcqoZNZu38vvXloQVvPhOTv3cducLAYkNuX2Yb18xxGpUSpwkTrgpC7NGX9eD17O3Mjz83J8x6kRRSWljEvLoNTBtNQUYqL040zCi77jReqIMed245QuzbnnlUVkb93tO061e/yd5aSvy+PBq/rTsXlD33FEapwKXKSOiIwwpoxKpkFMJDc+l0FBUYnvSNXm4+W5/OnjlaQO6cBlSW19xxHxQgUuUoe0bBLL49cksWzLbia9vth3nGqxNb+ACbMy6dmqMfdc1sd3HBFvVOAidczZPVvyi7O6MOPrdbw+v26d36ek1HHTrEz2FhYzfXQKsdGRviOJeKMCF6mDbh3ak5QOcUx8YQHrtu/zHafKPPVhNl+s3M6ky/vRvVVj33FEvFKBi9RB0ZERTEtNwQzGpKVTWFzqO9IJ+3rVdp58bzlXJLdl5OBE33FEvFOBi9RRic0a8MiIAczP2cUjby31HeeE7NhbyPiZmXRs3pDfX9mfsrMSi4Q3FbhIHTasXxt+fEpH/vbZat5fssV3nOPinOPW57PYsbeQaakpNKrn4yzIIrWPClykjrvz4t70adOEW57PYtOu/b7jHLNnPlvNB0u3cufFvejXrqnvOCK1hgpcpI6LjY5k+ugUCotLGZ+WSXFJ6MyHZ63P4+G3ljK0TyuuO7WT7zgitYoKXCQMdEloxANX9uObNTuY+v4K33EqJb+giDFp6bRsHMsjIwZo3lvkECpwkTBxZUoiIwYlMu3DbD7P3uY7zhE555j44gI25hUwNTWZuAYxviOJ1DoqcJEwMml4X7q0aMhNszLJ3X3Ad5zDmvHNOt6Yv4lbhvZgUMd433FEaiUVuEgYaRATxVM/HEj+/iImzM6ktLT2nXp06eZ8Jr22mDO6t+CXZ3b1HUek1lKBi4SZXq2bcPdlffh0xTb+/Mkq33G+Y19hMTc+l06T+tFMviaZiAjNe4scjgpcJAyNHtKBS/q34bF3ljFv7Q7fcf7rnlcWsWrbXp68NpmExvV8xxGp1VTgImHIzHjw6v60jYtlXFomefsKfUfipYwcnp+Xw5hzunFatxa+44jUeipwkTDVJDaa6akD2bq7gNvmzMc5f/Phq3L38NuXFjKkUzzjz+vuLYdIKFGBi4SxpPZx3D6sF+8s3sK/vlzrJUNBUQljZmRQLyqCKanJREXqx5JIZeh/ikiYu/70zpzbqyUPvLGEhRt21fjzP/jmEhZvyuexkUm0aVq/xp9fJFSpwEXCnJnx2Mgk4hvGMGZGOnsOFNfYc7+1cBPPfrmW60/vzHm9W9XY84rUBSpwESG+YQxTU1NYt2Mfv3tpQY3Mh6/fsY/b5sxnQGJTbh/Wq9qfT6SuUYGLCABDOsdz0/k9eDlzI8/Py6nW5yoqKWXczAycg2mpKcRE6UeRyLHS/xoR+a8bz+nGqV2bc/crC1mxZXe1Pc/j7ywnY10eD17dn47NG1bb84jUZSpwEfmvyAjjyWuTaRgTxZgZGRQUlVT5c3y0bCt/+nglqUM6cOmAtlX++CLhQgUuIt/Rskksk69NZtmW3dz32uIqfewt+QXcMjuLnq0ac89lfar0sUXCjQpcRL7nrB4J/PKsrqR9s47XsjZWyWOWlDpumpnJvsISpo9OITY6skoeVyRcqcBFpEK3DO3BwA5xTHxxAWu37z3hx3vqw2y+XLWd+4b3pXurxlWQUCS8qcBFpELRkRFMTU0hwmBsWgaFxaXH/VhfrdrOk+8t54rktowclFiFKUXClwpcRA4rsVkDHh2ZxPycXTz81tLjeowdewsZPzODjs0b8vsr+2OmU4SKVAUVuIgc0YV9W3PdKR155rPVvLd4yzGt65zj1uez2Lm3iGmpKTSqF1VNKUXCjwpcRI5q4sW96dOmCbfOyWJj3v5Kr/fMZ6v5YOlWfntJb/q1a1qNCUXCjwpcRI4qNjqS6aNTKCouZfzMDIpLjj4fnrk+j4f+s5QL+7bix6d0rIGUIuFFBS4ildIloREPXNmfb9fsZMr7K464bH5BEWPT0mnVJJZHrk7SvLdINVCBi0ilXZHSjpGDEpn+YTafZ2+rcBnnHBNfWMDGvAKmpqbQtEF0DacUCQ8qcBE5JvcN70vXhEaMn5lJ7u4D37t/xjfreGPBJm4d2pNBHZt5SCgSHlTgInJMGsREMX10CrsLipgwO5PS0v879eiSTfnc99pizuyRwC/O7OIxpUjdF/IFbmbDzGyZmWWb2R2+84iEg16tm3DPZX35dMU2/vTJSgD2FRYzZkY6TetHM/maJCIiNO8tUp1C+kOZZhYJPAVcAOQA35rZq865qj0Dg4h8T+qQ9ny+chuPv7OckzrHk/bNelZt28tz159Ei0b1fMcTqfNCusCBIUC2c24VgJnNBIYDKnCRamZmPHhVfxbk7OLqp78EYNy53Ti1WwvPyUTCQ6jvQm8HrC93OycYE5Ea0CQ2mmmpKQD0b9eUced195xIJHyE+jvwiibZ3PcWMrsBuAGgQ4cO1Z1JJKwktY/jw1vPplWTekRFhvp7ApHQEer/23KA9uVuJwLfO3mxc+4vzrnBzrnBCQkJNRZOJFx0btGQBjGh/n5AJLSEeoF/C3Q3s85mFgOMAl71nElERKTahfSvzM65YjMbA7wNRAJ/d84t8hxLRESk2oV0gQM4594E3vSdQ0REpCaF+i50ERGRsKQCFxERCUEqcBERkRCkAhcREQlBKnAREZEQpAIXEREJQSpwERGREKQCFxERCUHm3PfO/VGnmVkusLaKHq4FsK2KHsuHUM8Pob8NoZ4fQn8bQj0/hP42hHp+qNpt6OicO+qJO8KuwKuSmc11zg32neN4hXp+CP1tCPX8EPrbEOr5IfS3IdTzg59t0C50ERGREKQCFxERCUEq8BPzF98BTlCo54fQ34ZQzw+hvw2hnh9CfxtCPT942AbNgYuIiIQgvQMXEREJQSpwERGREKQCL8fMRprZIjMrNbPBh9w30cyyzWyZmV1YbnxYMJZtZneUG+9sZl+b2Qozm2VmMcF4veB2dnB/p2rcnllmlhlc1phZZjDeycz2l7vvT+XWGWRmC4J8U83MgvF4M3s32J53zaxZdeUul+VeM9tQLufF5e6rkn+PGtiGR81sqZnNN7OXzCwuGA+Jf4MjOdxr7ZuZtTezD81sSfD/eXwwXmXfTzW0HWuC74NMM5sbjFX4PWBlpgY555vZwHKPc12w/Aozu66Gsvcs9zpnmlm+md1U2/8NzOzvZrbVzBaWG6uy1/xw/7ePm3NOl+AC9AZ6Ah8Bg8uN9wGygHpAZ2AlEBlcVgJdgJhgmT7BOrOBUcH1PwG/Cq7/GvhTcH0UMKuGtu1x4O7geidg4WGW+wY4BTDgP8BFwfgjwB3B9TuAh2sg873ArRWMV9m/Rw1sw1AgKrj+8MHXLVT+DY6wXYd9rX1fgDbAwOB6Y2B58D1TZd9PNbQda/j/7Z1/jFxVFcc/X1sVa4EWUFLLD9tCbRRjqcY08iNAm0KJtqINsTGhFROCYKLyDzHV/4lE/xDEP4haUARCgdhggtQqoIYSbYG22tZuS6qbrkUBS4NYpPn6xz1TX+vM7HZ2dnbf7vkkL/vmvPvenHvPuXPnnrl7D5xxnKypDwBXh68IWAg8G/LTgL3xd3qcTx8FX/kbcO5YtwFwKbCg2je72eat+nanR87AK9jeYXtXk0vLgQdsH7b9ItAHfDyOPtt7bb8JPAAsjzro4/kAAAaaSURBVG9VVwDr4v57gE9XnnVPnK8DFg37W9ggxPOvBe4fpNwM4BTbz7h4270017tan9Ggm/YYUWw/YfuteLkJOKtd+RrZoGlbj6I+R7E9YHtLnB8CdgAz29xyQv40stoPSisfWA7c68ImYFr40pXABtuv2H4V2ABc1WOdFwF7bLfbAXNM2MD208ArTXQbdpsP0rc7IgfwoTET+GvldX/IWslPB/5Z+eBuyI95Vlw/GOVHkkuAA7Z3V2SzJD0n6SlJl1R066+Uqep9pu2B0HsAeO8I69zgyxGe+mElZNxNe/SS6ynfuhvUxQbNaNXWYwqVn6guBJ4NUTf8qVcYeELSZkk3hKyVD4zVOkCJNFYnD3WyAXSvzdv17Y6YcAO4pF9K2t7kaPetrtkM2R3I2z2rI4ZYn5Uc24EGgHNsXwjcAvxU0ind1m0oDKL/94E5wPzQ+duN21ro2Yk9hs1QbCBpDfAWcF+IxowNOmTM6ylpKvAw8FXbr9E9f+oVF9leACwFbpZ0aZuyY7IOKmtNlgEPhahuNmjHqH8OTR7OzXXE9uIObusHzq68PgvYH+fN5P+ghFMmx6yvWr7xrH5Jk4FT+f+QzZAZrD7xHp8BPlq55zBwOM43S9oDzA3dqiHeqt4HJM2wPRChoJc61flE9G8g6W7gsXjZTXsMmyHYYBXwSWBRhM7GlA06pJ0NRh1Jb6cM3vfZfgTA9oHK9eH4U0+wvT/+viTpUUo4uZUPtKpDP3DZcfInR1j1KkuBLY22r5sNgm61ebu+3RETbgbeIeuBz6msIJ8FnE9ZjPB74HyVFc7voISK1seH9K+BFXH/KuBnlWc1ViWuAH7V+FAfIRYDO20fDd1Ieo+kSXE+O+qzN8JDhyQtjN+Nr2uhd7U+I0Z0lgbXAI2Vod20x0jX4SrgVmCZ7X9V5LWwQRuatvUo6nOUaLcfADtsf6ci74o/9agO75Z0cuOcshhyO619YD1wnQoLgYPhS78AlkiaHuHqJSHrFcdE/+pkgwpdafNB+nZnDGcF3Hg7KA7VT5kZHYhGb1xbQ1kNuYvKykHKSsQ/x7U1FflsigP2UcJH7wz5SfG6L67PHuE6rQVuPE72WeCPlBWdW4BPVa59jNKp9gB38r/d+k4HNgK74+9pPbDHj4FtwNboLDO6bY8e1KGP8nvY83E0/gOhFjYYpG5N23q0D+BiSmhya6Xdr+6mP/WgDrPDN14IP1nTzgco4dnvhZ7bOPa/aK4PP+wDvtDDOkwBXgZOrcjGtA0oXzYGgP9QxoIvdrPNW/XtTo/cSjVJkiRJakiG0JMkSZKkhuQAniRJkiQ1JAfwJEmSJKkhOYAnSZIkSQ3JATxJkiRJakgO4EkyDpF0RCXb03ZJD0maMoxnXSbpsThfpjYZoSRNk3RT5fX7JK1rVT5Jks7JATxJxidv2J5v+wLgTeDG6sXYfOKE+7/t9bZva1NkGiXjXqP8ftsr2pRPkqRDcgBPkvHPb4DzVHKQ75B0F2XzmLMlLZH0jKQtMVOfCkdzMO+U9FvKVryEfLWkO+P8TJUc5y/E8QngNmBOzP5vj/fcHuVPkvQjlXzIz0m6vPLMRyQ9rpI/+VshnyRpbUQRtkn6Wi8bLUnGOhNuL/QkmUio7IW/FHg8RB+g7Ax1k6QzgG8Ai22/LulW4JYYQO+mpGDtAx5s8fjvAk/Zvia2hZ1KyZd8ge358f7vr5S/GcD2hyXNo2TamhvX5lOyhh0Gdkm6g5L1aWZEEZA0bXitkSTji5yBJ8n45F2Sngf+APyFsjc4wD6X3MUAC4EPAr+LsquAc4F5wIu2d7ts1fiTFu9xBSW7FLaP2D44iE4XU7bSxPZOYB8lgQvARtsHbf8b+FPosReYLemO2FP+taFXP0nGPzkDT5LxyRuNWXCDkj+B16siYIPtlceVm8/IpGxslk6xweHK+RFgsu1XJX0EuJIye7+Wssd0kiTkDDxJJjKbgIsknQcgaUqEtHcCsyTNiXIrW9y/EfhS3DtJJZ/5IeDkFuWfBj4f5ecC51ASVzQlQvxvs/0w8E1gwQnULUnGPTmAJ8kExfbfgdXA/ZK2Ugb0eRHGvgH4eSxi29fiEV8BLpe0DdgMfMj2y5SQ/HZJtx9X/i5gUpR/EFjtkhe9FTOBJyO8vxb4eif1TJLxSmYjS5IkSZIakjPwJEmSJKkhOYAnSZIkSQ3JATxJkiRJakgO4EmSJElSQ3IAT5IkSZIakgN4kiRJktSQHMCTJEmSpIb8F4tqwGLE+pszAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1163287b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(100, 10000) \n",
    "pred = np.arange(-10000,10000, 2)\n",
    "\n",
    "loss_mae = [mae(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot \n",
    "ax1.plot(pred, loss_mae)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"MAE Loss vs. Predictions\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Smooth Mean Absolute Error/ Huber Loss "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sm_mae(true, pred, delta):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: smoothed mean absolute error loss\n",
    "    \"\"\"\n",
    "    loss = np.where(np.abs(true-pred) < delta , 0.5*((true-pred)**2), delta*np.abs(true - pred) - 0.5*(delta**2))\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10f688da0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "target = np.repeat(0, 1000) \n",
    "pred = np.arange(-10,10, 0.02)\n",
    "\n",
    "delta = [0.1, 1, 10]\n",
    "\n",
    "losses_huber = [[sm_mae(target[i], pred[i], q) for i in range(len(pred))] for q in delta]\n",
    "\n",
    "# plot \n",
    "for i in range(len(delta)):\n",
    "    ax1.plot(pred, losses_huber[i], label = delta[i])\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"Huber Loss/ Smooth MAE Loss vs. Predicted values (Color: Deltas)\")\n",
    "ax1.legend()\n",
    "ax1.set_ylim(bottom=-1, top = 15)\n",
    "\n",
    "fig.tight_layout()\n",
    "\n",
    "# fig.savefig('/Users/princegrover/Documents/msan/Machine-Learning/images/huber.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Log cosh loss\n",
    "$ L(y, y^p) = \\sum\\limits_{i=1}^n  {\\log(\\cosh(y_i^p-y_i))} $  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def logcosh(true, pred):\n",
    "    loss = np.log(np.cosh(pred - true))\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1160e6b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "target = np.repeat(0, 1000) \n",
    "pred = np.arange(-10,10, 0.02)\n",
    "\n",
    "loss_logcosh = [logcosh(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot \n",
    "ax1.plot(pred, loss_logcosh)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"Log-Cosh Loss vs. Predictions\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Quantile loss\n",
    "\n",
    " $ L_\\gamma(y, y^p) = \\sum\\limits_{i=y_i<y_i^p}  ({\\gamma-1}).|y_i - y_i^p| + \\sum\\limits_{i=y_i\\geq y_i^p}  ({\\gamma}).|y_i - y_i^p|  $  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def quan(true, pred, theta):\n",
    "    loss = np.where(true >= pred, theta*(np.abs(true-pred)), (1-theta)*(np.abs(true-pred)))\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfAAAAFgCAYAAABEyiulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xt8zvX/x/HHazOHMefJ2XLIsWGIIpSKakXfCpmSdKQUSkdKkSiHdNBBB2WOpVCUlGOKDEPO5/NsDhu22en9++Nz+bVkM+y63te1ve6323Xbrl3XPp/nddhe1/vweX/EGINSSimlfIuf7QBKKaWUunhawJVSSikfpAVcKaWU8kFawJVSSikfpAVcKaWU8kFawJVSSikfpAVcKaWU8kFawJXXEpGXRGRCNrc/KCLLPJkpKyISIiJGRAq4rs8TkR4e2O9rIjLJDdv9UkSG5vZ2c7DfKSLSKZe2tUhEHs6NbfkCEYkQkfmZrhsRqXmZ21wpIvUvP51yBy3g+ZiI7BaRm2znyIox5k1jzMPw3wJ5KVyPN0lETolIjIh8ISLFci/xP4wxtxpjJuYwk9e+Bp4kIqFAQ2BWpp9VEJHPROSQiJwUkc0iMkREitpL+v/ZSorIeBE5LCKJIrLeEx/aXPv+z9+DMSbSGHNLLu/qHeD1XN6myiVawFV+c4cxphgQBjQDXjn3DuLQvw3PewyINK7lIUWkNPAHUAS41hgTBNwMlARquCtETj4kikhBYAFQDbgWKAE8B4wUkb7uymbBbOAGEalgO4j6L/0npc5LRB4Rke0ickxEZotIRdfPRUTGiMgREYkXkXUi0sB1220istHVUjogIs9mse09ItLE9X13V0uinuv6wyLyvev7zN3DS1xfT7ha0Ndm2t47InJcRHaJyK05eXzGmAPAPOBs9kUiMkxEfgcSgeoiUiJT6++AiAwVEX/X/f1d+40TkZ3A7ec8xn9137qez02u52ajiISJyNdAVWCO6zENdN23hYgsF5ETIhItIm0zbedKEVns2s4vQNmsHqNrf+GZrhdw5Q1zXZ/haj3Gi8iSrLpK5TxDFZm7Z0WkkOu52Ovq2fhIRIq4bisrIj+4HssxEVmazYejW4HFma73B04C3Y0xuwGMMfuMMU8bY9a5tn+diPzlegx/ich1WTwGPxF5xfXeOyIiX4lICddtZ1uzvURkL/BbVs9pJvfjvHb3GmN2GWNSjTE/AX2BoSISdO7z5Lr+/0MTIlLK9dzEut6/P4hI5Uz3XSQib4jI767Xe76InH29//P3cL7XKdO2Luk1MsYkA1FAbrfsVS7QAq7+Q0RuBIYDnYEKwB5gquvmW4DWwFU4LaEuwFHXbZ8Bj7laSg3I+h/hYqCt6/vWwE6gTabri8/zO61dX0saY4oZY/5wXW8ObMEpZCOBz0REcvAYqwC3AWsy/fh+4FEgCOcxTwTSgJpAY5zHfrYoPwKEu37eFLgnm33dC7wGPAAUB+4Ejhpj7gf24uoVMMaMFJFKwI/AUKA08CzwrYgEuzY3GecfalngDSC7LtspwH2ZrrcH4owxq13X5wG1gHLAaiAym21lZwTO+6ERznNVCRjsum0AsB8IBq4AXgL+cwIGcbrEr8R5Lc+6CZhpjMk4307FaaH/CIwDygCjgR9FpMx57v6g63IDUB0oBrx/zn3aAHVxnifE+XDaLYvHfDMwzxhz+pyffwsEAi2y+L3M/IAvcFrxVYGk82TqBvTEeY0K4rwfIOu/h6xczmu0CWdoQ3kZLeDqfCKAz40xq40xZ4AXgWtFJARIxSlwdQAxxmwyxhxy/V4qUE9EihtjjmcqFOdazD8F+3qcDwtnr7fh/AU8K3uMMZ8aY9JxCm4FnH9CWfleRE4Ay1z7eTPTbV8aY/42xqThFM9bgWeMMaeNMUeAMUBX1307A2NdLcJjrseQlYeBkcaYv4xjuzFmTxb37Q7MNcbMNcZkGGN+AVYBt4lIVZxu/0HGmDPGmCXAnGz2Oxm4U0QCXde7uX4GgDHmc2PMSddr/BrQ8GyrNKdcH5YeAfoZY44ZY07iPKdnn6dUnNekmquVuvRsF/k5Srq+nsz0szLAofPc96zbgW3GmK+NMWnGmCnAZuCO89w3AhhtjNlpjDmF857uKv/uLn/N9VonARhjQo0xk8+zLXA+QP0nm+u9E4dTDLNljDlqjPnWGJPoet6G8c/fwVlfGGO2ujJNxynAFyUXXqOT/PP6KC+iBVydT0WcFigArn94R4FKxpjfcFoJHwAxIvKJiBR33fVunFbtHlc377Wc32LgehEpD/gD04CWrg8IJYC1F5H1cKacia5vs5uY1skYU9IYU80Y0/vsP2uXfZm+rwYEAIdcXYsngI9xWkLgPEeZ759VQQaoAuy4wOPIvN97z+7Ttd9WOP9gKwLHz2n1ZblfY8x2nNbTHa4ifieuAi7OEMBbIrJDRBKA3a5fy7JLPgvBOC3OqEx5f+KfAvY2sB2YLyI7ReSFLLZzwvU1KNPPjuI87qz8633qsgendXmh++4BCvDvD3v7yLm482VzfSAoC8ReaAMiEigiH7u69RNwusVLimuYxuVwpu8Tyf69nZXLfY2C+Of1UV5EC7g6n4M4hQT4/+7NMsABAGPMOGNME6A+Trfcc66f/2WM6YhT5L7HaTH8h6uwJOKMFy5xtQgO43RfL8uiy9QT573NvI99wBmgrKvglzTGFDfGnB0nPoRTmM+qms1295H1pKtzH9c+4OtM+yxpjClqjHnLtc9S8u8Z2NntF/7pRu8IbHQ99+C0xjvidFOXAEJcPz/f8MNpnALg3MH54HVWHE7Xb/1MeUu4JgriauEPMMZUx2kZ9xeRdv95EpwPJTtw3k9nLQDuymbM/F/vU5equN6nF7hvVZzhkZjMMbLYz/ksAG6V/86GvxunRbvSdT2RTM8dkPm5GwDUBpobY4rzT7f4BYeALjLr5b5GdYHoi9if8hAt4CpARApnuhTAaaX1FJFGIlIIp7tthTFmt4g0E5HmIhKA8489GUgXkYLiHIdawhiTCiQA6dnsdzHwJP90ly865/q5YoEMnPFLt3MNC8wHRolIcdckqBoicraLczrQV0Qqi0gpIKuWJcAE4FkRaSKOmiJytpjE8O/HNAmnxdze1UouLCJtRaSyq9t9FTDE9Xy34vzdxZlNxRm7f4JM3ec4raozOK3cQP49lHCuaKC+6/1QGKe7HQDXh61PgTEiUg5ARCqJyNlx5HDX4xX+eU9k9b6Yy7+7kEfjzBmYePb5cm17tDiHnM0FrhKRbuJM0OsC1AN+OM+2pwD9xJkEWMz1eKe5urwvxdc448YzxJkEF+B6zONwhkviXfdbC3RzvZYdznl8QTiF9YRrPP/Vi9h/jv8eLuc1cv39NwF+uYhsykO0gKu5OP9Ezl5eM8b8CgzCmZBzCKf1eHa8rDjOP4PjON2QR3GOFQVnEthuV3fg4zjjuVlZjPMPbEkW1//F1T0+DPjd1Q2Yk0lCl+sBnIlDG3Ee7zf80236KfAzTnFbDczMaiPGmBk42SfjjCd+jzPGDs7Y+Suux/SsMWYfTsv4JZx/0vtwejjO/q12w5m4dwznH/5X2T0A1weRP4DrcIYqzvoK5/U74Hp8f2azja04xwIvALbhzB/I7HmcLtg/Xa/9ApyWJTiT5BYAp1w5PjTGLMpiV58AEa5CgmtuwXU4LdoVInIS+BWIB7YbY47iTCQcgPM+HAiEG2PizrPtz3GK7hJgF84Hz6eyeswAIvK3iESc7zbXvIGbcF6fFTh/Oz8BY4Ehme76NM6HrBM44/DfZ7ptLM4hcnE4z/9P2eU5Z/8X+/dwqa/RncAiY8zBnGZTniPnn0+ilFKeJyKTgenGmO8veGcv4uqRmofzgejBLCbq+RwRWQH0MsZssJ1F/ZcWcKWUygXizOB/GucDyGbbeVTepwVcKaWU8kE6Bq6UUkr5oEs+MYQ7lC1b1oSEhNiOoZRSSlkTFRUVZ4y54GJAXlXAQ0JCWLVqle0YSimllDUikt3CUP9Pu9CVUkopH6QFXCmllPJBWsCVUkopH6QFXCmllPJBWsCVUkopH6QFXCmllPJBWsCVUkopH6QFXCmllPJBWsCVUkopH6QFXCmllPJBebaAJ6clszdhr+0YSimllFvk2QL+3OLnePSXR4k/E287ilJKqTwoKSWd/tPWsu9YopX959kC/kjoI8QkxvDSspfIMBm24yillMpDjDG8/N16vlt7gB2xp6xkyLMFPDQ4lOebPc+S/Uv4dN2ntuMopZTKQyJX7GXmmgM83a4WbWuXs5IhzxZwgC61uxBePZwP1n7A8oPLbcdRSimVB6zdd4LX52ykzVXB9L2xlrUcebqAiwiDWgyiRskaPL/keQ6dOmQ7klJKKR927HQKvSdFERxUiLFdGuHnJ9ay5OkCDhAYEMjYG8aSlpHGgMUDSElPsR1JKaWUD0rPMDw9dQ1xp1IY3z2MUkULWs2T5ws4QLXi1Rjacijr49Yz8q+RtuMopZTyQe8u2MrSbXEM6Vif0MolbcfJHwUcoF21dvRs0JNpW6YxZ8cc23GUUkr5kN82xzDut+3c06QyXZtVsR0HyEcFHKBv4740K9+M1/94nS3HttiOo5RSygfsO5bIM1PXUrdCcYZ2aoCIvXHvzPJVAS/gV4CRrUcSVDCI/ov6k5CSYDuSUkopL5acms7jk6IwwEfdwygc4G870v/LVwUcoGyRsoxqO4qDpw7yyrJXMMbYjqSUUspLvTrrb/4+mMCYzo2oVqao7Tj/ku8KOEDjco0Z0HQAC/ct5PMNn9uOo5RSygtN+2sv01bto88NNbip3hW24/xHvizgABF1I+gQ0oFxa8ax8tBK23GUUkp5kQ0H4hk0629a1ixD/5tr245zXvm2gIsIQ64bQkjxEJ5b8hwxp2NsR1JKKeUFTiSm8PikKMoULci4ro3xt7hYS3bybQEHZ5GXMW3HkJyWzIDFA0hNT7UdSSmllEUZGYZ+09YSk5DMBxFhlClWyHakLLmtgItIbRFZm+mSICLPuGt/l6p6yeoMaTmE6NhoRkWNsh1HKaWURe8v3M7CLbEMCq9HWNVStuNkq4C7NmyM2QI0AhARf+AA8J279nc5OoR0IPpINJM2TaJhcENuvfJW25GUUkp52OKtsYxZsJVOjSpyf4tqtuNckKe60NsBO4wxezy0v4vWv2l/GpdrzKvLX2XHiR224yillPKg/ccTeXrqGq4qF8Sb/7vaaxZryY6nCnhXYMr5bhCRR0VklYisio2N9VCc/wrwC+CdNu8QWCCQZxY+w+nU09ayKKWU8pwzaen0iVxNerphfPcwAgu6rXM6V7m9gItIQeBOYMb5bjfGfGKMaWqMaRocHOzuONkqF1iOt9u8zb6T+xj0+yBd5EUppfKB1+dsJHp/PG/f25DqwcVsx8kxT7TAbwVWG2N84jitZuWb8UzYM/yy5xe+3vi17ThKKaXc6Nuo/USu2MtjravToUF523EuiicK+H1k0X3urXrU78FNVW9idNRoomKibMdRSinlBhsPJvDSd+tpfmVpnmvvnYu1ZMetBVxEAoGbgZnu3E9uExHeaPkGlYMq8+ziZ4lNtDc2r5RSKvfFJ6XyRGQUJYoE8F63xhTw971lUdya2BiTaIwpY4yJd+d+3KFYwWKMaTuG06mneXbxs6Rm6CIvSimVF2RkGAZMj+bA8SQ+jAijXFBh25Euie995PCgWqVqMfjawaw+spp3o961HUcppVQu+GjJDhZsiuHF2+rSNKS07TiXTAv4BYRXD6dr7a5M3DiR+bvn246jlFLqMizfHsc7P2/h9tAKPNQyxHacy6IFPAcGNhtIaNlQBi8fzK74XbbjKKWUugSH4pN4asoarixblBF3h/rEYi3Z0QKeAwH+AYxqO4qCfgXpt7AfiamJtiMppZS6CClpGfSJXE1Sajof39+EYoV8Y7GW7GgBz6HyRcszss1IdiXs4rU/XtNFXpRSyoe8OXcTq/eeYOQ9odQsF2Q7Tq7QAn4RWlRowZONnmTernlM2exTh7YrpVS+NWvtAb5cvpuHWl5JeGhF23FyjRbwi9Tr6l60rdyWt1e9zdoja23HUUoplY2tMSd54dv1NK1Wihdvq2M7Tq7SAn6R/MSPYdcPo3xgeQYsHsDRpKO2IymllDqPk8mpPP51FEULFeCDiDACfHCxluzkrUfjIcULFmfMDWOIPxPP80ueJy0jzXYkpZRSmRhjGPjNOvYcS+T9bo25orhvLtaSHS3gl6hO6Tq80uIVVhxewQdrP7AdRymlVCYTlu5i3obDDGxfmxbVy9iO4xZawC9Dp5qduOeqe5iwfgK/7f3NdhyllFLAip1HeeunzXSoX55HW1e3HcdttIBfpheueYH6Zerz8rKX2Zuw13YcpZTK144kJPPklDVULR3IyHt9f7GW7GgBv0yF/Asxuu1o/P386beoH0lpSbYjKaVUvpSankGfyas5lZzGR92bULxwgO1IbqUFPBdULFaRt65/i23HtzH0z6G6yItSSlkwYt5m/tp9nOH/u5ra5fPGYi3Z0QKeS1pVasUTDZ9g9o7ZzNg6w3YcpZTKV+auP8SEZbt44NpqdGpcyXYcj9ACnosea/gYrSq14q2Vb7EhboPtOEoplS9sP3KK52ZE06hKSV6+va7tOB6jBTwX+Ykfw1sNJ7hIMP0X9ed48nHbkZRSKk87fSaNJyZFUSjAnw8jwihUwN92JI/RAp7LShYuyegbRhOXFMcLS18gPSPddiSllMqTjDG8MHM9O2JPMa5rYyqWLGI7kkdpAXeD+mXq81Lzl1h+cDkfrfvIdhyllMqTJi7fzZzogwy4pTatapW1HcfjtIC7yd217qZTzU58FP0RS/YvsR1HKaXylKg9xxj64yZuqluOJ9rUsB3HCi3gbiIivNz8ZeqUrsOLS19k/8n9tiMppVSeEHfqDL0jV1OxZBFG3dsIP7+8u1hLdrSAu1HhAoUZ3XY0BkP/Rf05k37GdiSllPJpaekZPDV5DScSUxnfPYwSgXl7sZbsaAF3sypBVRjeajibjm1i+IrhtuMopZRPG/XLVv7YeZShnRpQv2IJ23Gs0gLuAW2qtOGRqx/h223f8t2272zHUUopnzT/78OMX7SD+66pyr1Nq9iOY50WcA/p06gPLSq0YOifQ9l0dJPtOEop5VN2xZ1mwPRorq5UglfvqGc7jlfQAu4h/n7+jGg9gtJFStNvUT/iz8TbjqSUUj4hKSWdJyZF4e8vfBgRRuGA/LNYS3bcWsBFpKSIfCMim0Vkk4hc6879ebvShUszqs0oYhJjeHHpi2SYDNuRlFLKqxljePm79WyJOcnYLo2oUjrQdiSv4e4W+LvAT8aYOkBDIN/3HYcGh/J8s+dZemApn6771HYcpZTyapEr9jJzzQGebleLtrXL2Y7jVdxWwEWkONAa+AzAGJNijDnhrv35ki61uxBePZwP1n7A8gPLbcdRSimvtHbfCV6fs5E2VwXT98ZatuN4HXe2wKsDscAXIrJGRCaISFE37s9niAiDWgyiRskaPL/0eQ6dOmQ7klJKeZVjp1PoPSmK4KBCjO2SfxdryY47C3gBIAwYb4xpDJwGXjj3TiLyqIisEpFVsbGxbozjXQIDAhl7w1jSMtLov6g/KekptiMppZRXSM8wPD11DXGnUhjfPYxSRQvajuSV3FnA9wP7jTErXNe/wSno/2KM+cQY09QY0zQ4ONiNcbxPteLVGNpyKBuObmDkXyNtx1FKKa/w7oKtLN0Wx5CO9QmtXNJ2HK/ltgJujDkM7BOR2q4ftQM2umt/vqpdtXb0bNCTaVumMWfHHNtxlFLKqt82xzDut+3c06QyXZvpYi3ZKeDm7T8FRIpIQWAn0NPN+/NJfRv3ZUPcBl7/43WuKnUVtUvXvvAvKaVUHrPvWCLPTF1L3QrFGdqpASI67p0dtx5GZoxZ6+oeDzXGdDLGHHfn/nxVAb8CjGw9kqCCQfRf1J+ElATbkZRSyqOSU9N5fFIUBviouy7WkhO6EpuXKFukLKPajuLgqYO8suwVjDG2IymllMe8Outv/j6YwJjOjahWRg9Yygkt4F6kcbnGDGg6gIX7FvL5hs9tx1FKKY+Y9tdepq3aR58banBTvStsx/EZWsC9TETdCDqEdGDcmnGsPLTSdhyllHKrDQfiGTTrb1rVLEv/m3X+z8XQAu5lRIQh1w0hpHgIzy15jpjTMbYjKaWUW5xITOHxSVGUKVqQd7s2wl8Xa7koWsC9UGBAIGPajiE5LZkBiweQmp5qO5JSSuWqjAxDv2lriUlI5sOIMMoUK2Q7ks/RAu6lqpeszpCWQ4iOjWZU1CjbcZRSKle9v3A7C7fEMji8Ho2rlrIdxydpAfdiHUI60L1udyI3RTJ351zbcZRSKlcs3hrLmAVb6dSoIt1bVLMdx2dpAfdy/Zv2J6xcGK/98Rrbj2+3HUcppS7L/uOJPD11DVeVC+LN/12ti7VcBi3gXi7AL4C327xNYIFA+i3qx6mUU7YjKaXUJTmTlk6fyNWkpxvGdw8jsKC7FwPN27SA+4BygeV4u83b7Du5j8HLB+siL0opn/T6nI1E74/n7XsbUj24mO04Pk8LuI9oVr4Zz4Q9wy97fuGrjV/ZjqOUUhfl26j9RK7Yy2Otq9OhQXnbcfIELeA+pEf9HtxU9SbGRI0hKibKdhyllMqRjQcTeOm79TS/sjTPtdfFWnKLFnAfIiK80fINKgdV5tnFzxKbGGs7klJKZSs+KZUnIqMoUSSA97o1poC/lp3cos+kjylWsBhj2o7hdOppnl38LKkZusiLUso7ZWQYBkyP5sDxJD6MCKNcUGHbkfIULeA+qFapWgy+djCrj6zm3ah3bcdRSqnz+mjJDhZsiuHF2+rSNKS07Th5jhZwHxVePZyutbsyceNE5u+ebzuOUkr9y/Ltcbzz8xZuD63AQy1DbMfJk7SA+7CBzQYSWjaUwcsHsyt+l+04SikFwKH4JJ6asoYryxZlxN2huliLm2gB92EB/gGMajuKgn4F6bewH4mpibYjKaXyuZS0DPpEriY5NZ2P729CsUK6WIu7aAH3ceWLlmdkm5HsStjFa3+8pou8KKWsenPuJlbvPcGIe0KpWS7Idpw8TQt4HtCiQguebPQk83bNY/LmybbjKKXyqVlrD/Dl8t081PJKwkMr2o6T52kBzyN6Xd2LtpXb8s5f77D2yFrbcZRS+czWmJO88O16mlYrxYu31bEdJ1/QAp5H+Ikfw64fRvmi5RmweABHk47ajqSUyidOJqfy+NdRFC1UgA8iwgjQxVo8Qp/lPKR4weKMuWEM8WfiGbhkIGkZabYjKaXyOGMMA79Zx55jibzfrTFXFNfFWjxFC3geU6d0HQa1GMTKwyt5f837tuMopfK4CUt3MW/DYQa2r02L6mVsx8lXtIDnQR1rduSeq+7hsw2f8dve32zHUUrlUSt2HuWtnzbToX55Hm1d3XacfEcLeB71wjUvUL9MfV5e9jJ7E/bajqOUymOOJCTz5JQ1VC0dyMh7dbEWG7SA51GF/Asxuu1o/P386beoH0lpSbYjKaXyiNT0DPpMXs2p5DQ+6t6E4oUDbEfKl9xawEVkt4isF5G1IrLKnftS/1WxWEXeuv4tth3fxtA/h+oiL0qpXDFi3mb+2n2c4f+7mtrldbEWWzzRAr/BGNPIGNPUA/v6hzGQke7RXXqjVpVa8UTDJ5i9YzYzts6wHUcp5ePmrj/EhGW7eODaanRqXMl2nHwt73ahL3wTpt0PKadtJ7HusYaP0apSK95a+RYb4jbYjqOU8lHbj5ziuRnRNKpSkpdvr2s7jn1pKfDbMEiOt7J7dxdwA8wXkSgRefR8dxCRR0VklYisio2Nzb09Fw2GrfPgi9vg5OHc264P8hM/hrcaTnCRYPot6sfx5OO2IymlfMzpM2k8MSmKQgH+fBgRRqEC/rYj2ZV0HCb9D5aMhK12Tuns7gLe0hgTBtwK9BGR1ufewRjziTGmqTGmaXBwcO7tufmj0HUKxG2DT9tBzN+5t20fVLJwSUbfMJqjSUd5YekLpOvwglIqh4wxvDBzPTtiTzGua2MqlixiO5Jdx3bBhJth759w1ycQeq+VGG4t4MaYg66vR4DvgGvcub//qN0BHpoHJh0+aw/bF3h0996mfpn6vNT8JZYfXM746PG24yilfMTE5buZE32QAbfUplWtsrbj2LV3BUxoB4lx8MAsaNjFWhS3FXARKSoiQWe/B24BPD8AW6EhPPwrlAqByM6w6guPR/Amd9e6m041O/Hxuo9Zsn+J7ThKKS8XtecYQ3/cxE11y/FEmxq249i1YSZMvAMKl4BeCyCkpdU47myBXwEsE5FoYCXwozHmJzfuL2slKjkt8Zrt4IdnYP4gyMiwEsU2EeHl5i9Tp3QdXlz6IvtP7rcdSSnlpWJPnqF35GoqlizCqM6N8PPLp4u1GANLR8M3PaFiY6d4l61pO5X7CrgxZqcxpqHrUt8YM8xd+8qRQkHOmHizh2H5OJjRA1ISrUaypXCBwoxuOxqDof+i/pxJP2M7klLKy6SlZ9B3yhpOJKYyvnsYJYrk08Va0lNh9lPw6xBocI/TbV7UO9Z8z7uHkZ2PfwG47R1oPxw2zYGJ4XDqiO1UVlQJqsLwVsPZdGwTb65403YcpZSXeWf+Vv7YeZShnRpQv2IJ23HsSDoBk+6GNV9D6+fgf59CgPecbS1/FXAAEbi2N3SNhCObnMkIRzbbTmVFmypteOTqR5i5bSYzt820HUcp5SV+/vswHy3ewX3XVOXeplVsx7Hj+B74vD3s+R06fgg3vgJ+3lUyvSuNJ9W5HR78EdLOwGe3wM5FthNZ0adRH1pUaMGwP4ex8ehG23GUUpbtijvNs9OjubpSCV69o57tOHbsj3IadycPQfeZ0DjCdqLzyr8FHKBSmDNDvUQlp5tk9de2E3mcv58/I1qPoHSR0vRf1J/4M3ZWFFJK2ZeUks4Tk6Lw9xc+jAijcEA+XKxl42z48nYICIRev0D1NrYTZSl/F3CAklXgoZ/gytYw+0lYMCTfzVAvXbg0o9q6XWhOAAAgAElEQVSMIiYxhheXvkiGyV+PXynlLNby8nfr2RJzkrFdGlGldKDtSJ5lDPw+DqY/AOUbOI274Nq2U2VLCzg4x/R1mw5NHoRlo+HbXpCabDuVR4UGh/J8s+dZemApn6771HYcpZSHRa7Yy8w1B3i6XS3a1i5nO45npafBD/3gl0FQryP0mAPFcnFlUDcpYDuA1/APgPCxULqG8yImHICuk6Fo/ll1qEvtLkTHRvPB2g+4uuzVXFfpOtuRlFIesHbfCV6fs5E2VwXT98ZatuN4VnICzHgQdvwKrfrBjYO9brJaVi6YUkRGikhxEQkQkV9FJE5EunsinMeJQMu+0PkrOBTtTGKI22Y7lceICINaDKJGyRo8v/R5Dp46aDuSUsrNjp1OofekKIKDCjG2Sz5brCV+P3zewZnEfMc4uOk1nynekLMu9FuMMQlAOLAfuAp4zq2pbKvX0ZmhnnIaJtwEu5baTuQxgQGBjL1hLGkZaQxYNICU9BTbkZRSbpKeYXh66hriTqUwvnsYpYoWtB3Jcw6ucU50Fb8Pun8DTXrYTnTRclLAzy6/cxswxRhzzI15vEflpvDwAih2BXx9F6ydYjuRx1QrXo2hLYey4egGRqwcYTuOUspN3l2wlaXb4hjSsT6hlUvajuM5m+c6p5r2D4Be86HGjbYTXZKcFPA5IrIZaAr8KiLBQP6Y4VUqxHlxq10L3z8OC990ZirmA+2qtaNng55M3zqd2Ttm246jlMplv22OYdxv27mnSWW6Nssni7UYA3+Oh6ndnBnmD/8K5eraTnXJLljAjTEvANcCTY0xqcBpoKO7g3mNIiUh4lto3B0Wj4CZjzqLv+QDfRv3pVn5ZrzxxxtsObbFdhylVC7ZdyyRZ6aupV6F4gzt1ACRfDDunZ4G8wbCTy+4FvKaC0FX2E51WXIyie1eIM0Yky4irwCTgIpuT+ZNChSEO9+HdoNh/XT4qhMk5v2RhAJ+BRjZeiRBBYPot6gfCSkJtiMppS5Tcmo6j0+KAuCj7k3yx2ItZ045re6Vn8C1TzoTlQv6/nHuOelCH2SMOSkirYD2wERgvHtjeSERuH4A3PM5HIhyJrcd3WE7lduVLVKWUW1HcejUIV5Z9oou8qKUjxs8awN/H0xgTJdGVC3j+0XsghIOwhcdYPsCuH00tB8GfnnjQ0tOCni66+vtwHhjzCwgH01VPEeDu52D/JNPOIeZ7VluO5HbNS7XmAFNB7Bw30K+2PCF7ThKqUs07a+9TF+1nydvqEm7ur7dfZwjh9Y5M82P7XIW62rWy3aiXJWTAn5ARD4GOgNzRaRQDn8v76ra3JmhHlgWvuoI62bYTuR2EXUj6BDSgXFrxrHi0ArbcZRSF2n9/ngGzfqbVjXL0u/mq2zHcb+tPzvHeIs4y2XXusl2olyXk0LcGfgZ6GCMOQGUJq8fB54Tpas7M9QrXwMzH4bFb+fpGeoiwpDrhhBSPISBSwYSczrGdiSlVA6dSEzhicgoyhQtyLtdG+Gf1xdrWfkpTOkKZWo4M83LX207kVvkZBZ6IrADaC8iTwLljDHz3Z7MFwSWhvu/g9CusHAofN8b0vLuwieBAYGMaTuG5LRkBiweQGp6qu1ISqkLyMgw9Ju2lpiEZD6MCKNMsUK2I7lPRjr89CLMfRZqtYee86B4Bdup3CYns9CfBiKBcq7LJBF5yt3BfEaBgnDXR9D2JYieDJP+B0nHbadym+olq/N6y9eJjo1mVNQo23GUUhfw/sLtLNwSy+DwejSuWsp2HPdJOQ3T7oc/P4TmT0DXSChUzHYqt8rJyUx6Ac2NMacBRGQE8AfwnjuD+RQRaPu8s/DL7Cdhws0QMQNKX2k7mVu0D2lPdGw0X2/8mtCyodxW/TbbkZRS57F4ayxjFmylU6OKdG9RzXYc9zl5GCZ3gcPr4NaR0Pwx24k8Iidj4MI/M9FxfZ/HB1AuUcMucP/3kBjnzFDft9J2Irfp16QfYeXCeO2P19h+fLvtOEqpc+w/nsjTU9dwVbkg3vzf1Xl3sZaYv52Z5nHboOuUfFO8IWcF/AtghYi8JiKvAX8Cn7s1lS8LaQm9FjjnGP8yHDbMtJ3ILQL8Ani7zdsEFgik36J+nEo5ZTuSUsrlTFo6fSJXk55uGN89jMCCefTM0dsXwGftwaTDQ/OgdgfbiTwqJ5PYRgM9gWPAcaCnMWaMu4P5tLI1nSJesTF80xOWjs6TM9TLBZbj7TZvs+/kPgYvH4zJg49RKV/0+pyNRO+P5+17G1I9OI+OA6/6HCI7O0OXD/8KFRraTuRxOTqe2xiz2hgzzhjzrjFmjYjsdXcwn1e0DDwwCxrcA78OgdlPQR6ctd2sfDOeCXuGX/b8wlcbv7IdR6l879uo/USu2MtjravToUF523FyX0YGzB8EP/SDmu2clneJSrZTWXGp/Sp5dDAllwUUhrsnOMeMLxkJJ/Y6a/AWyVun7etRvwfRsdGMiRpD/TL1aVq+qe1ISuVLGw8m8NJ362l+ZWmea1/bdpzcl5II3z0Gm2ZDs4ehwwjwz6PDAzlwqSuqaV9pTonAjS9Dp/HOsquft4fje2ynylUiwhst36ByUGWeW/IcsYmxtiMple/EJ6XyRGQUJYoE8F63xhTwz2MLZp46AhPDYdMcaP8m3PZOvi7ekE0LXET6Z3UTkONBFRHxB1YBB4wx4RcXLw9p1A1KVIZp3Z0Todw3FSo3sZ0q1xQrWIwxbccQMTeCZxc/y4T2EwjwC7AdS6l8ISPDMGB6NAeOJzH10RaUCypsO1LuOrIZIu+F07HQZRLUzb+lJLPsPqIFZXEpBrx7Eft4Gth0qQHzlCtbO5PbAorAl7fDxtm2E+WqWqVqMfjawaw+spp3oy7mLaKUuhwfLdnBgk0xvHRbXZqGlLYdJ3ftXASf3QLpZ6DnXC3emWTZAjfGDLncjYtIZZyzmA0DsmrR5y/BVzkzJqfeB9MfgJtfh+uecrra84Dw6uFEH4lm4saJhAaHckvILbYjKZWn/b49jnd+3kJ4aAV6tgyxHSd3rf4afngGyl4F3aZByaq2E3kVdw+SjAUGAlmeRFpEHhWRVSKyKjY2n4ydFgt2TklaryP84ppNmZ5mO1WuGdhsIKFlQxn0+yB2xe+yHUepPOtQfBJ9p6yhenAxRtwdmncWa8nIgAVDnJUtQ653ziamxfs/3FbARSQcOGKMicrufsaYT4wxTY0xTYODg90Vx/sEFIF7voBW/SHqC5jcGZITbKfKFQH+AYxqO4pC/oXot7AfiamJtiMpleekpGXQO3I1yanpfNQ9jKKF8siErtQk+PYhWDYawno4y1IXLmE7lVdyZwu8JXCniOwGpgI3isgkN+7P9/j5wU2vwp3vwa7Fzrlr4/fbTpUryhctz8g2I9mVsIvX/nhNF3lRKpe9OXcTa/aeYMQ9odQsF2Q7Tu44HQcT74S/v3OGF+94F/x1MmxWcnI2sitE5DMRmee6Xk9Eel3o94wxLxpjKhtjQoCuwG/GmO6XnTgvCnsAIr6B+H3Omr4H19hOlCtaVGjBk42eZN6ueUzePNl2HKXyjFlrD/Dl8t081PJKwkMr2o6TO+K2OeeQOLwO7p0ILZ/OM3OD3CUnLfAvgZ+Bs++SrcAz7gqUb9W4AXrNB/+C8MVtsHmu7US5otfVvWhbuS3v/PUOa4+stR1HKZ+3NeYkL3y7nqbVSvHibXVsx8kdu5Y6h9emnIYHf4T6nWwn8gk5KeBljTHTcU1EM8ak8e+zk12QMWZRvj4GPKfK1YWHF0BwHZjaDf4c7/NrqPuJH8OuH0b5ouUZsGgAR5OO2o6klM86mZzK419HUbRQAT6ICCMgLyzWsnYKfH0XFLvC+f9XWVdyzKmcvPqnRaQMrtXXRKQFEO/WVPlZ0BXOJ9A6t8NPL8C8gT4/Q714weKMuWEM8SnxDFwykLQM3348StlgjGHgN+vYcyyR97s15oriPr5YizGw8E34/nGodi30+tk5MYnKsZwU8P7AbKCGiPwOfAU85dZU+V3BQOj8tXN8+MpPnNb4Gd8+XWed0nUY1GIQKw+v5P0179uOo5TPmbB0F/M2HGZg+9q0qF7GdpzLk3YGZj4Ci0dAo+4Q8S0UKWU7lc+54HEHxpjVItIGqI2zjOoWY0zeO62Wt/Hzg1uGQqkrYe5z8EUH6DYdivvuhJWONTuyNnYtn234jNDgUG6seqPtSEr5hBU7j/LWT5vpUL88j7aubjvO5Uk8BlMjYO9yuHEQXD9AJ6tdIsnq8B4R+V92v2iMmZnbYZo2bWpWrVqV25v1fdsWwIwHoVCQsxpRhVDbiS7ZmfQz9JjXgz0Je5gWPo2qxXVxBqWycyQhmdvfW0axQgWY9WRLihf24cOqju5w1jSP3w93jYcGd9tO5JVEJMoYc8HJANl1od+RzUUnpHlSrZuclYhEnGPFt/5sO9ElK+RfiNFtR+Pv50+/Rf1ISkuyHUkpr5WankGfyas5lZzGR92b+Hbx3rPcOUws6Tj0mK3FOxdk2QK3QVvgF5BwCKZ0gcPr4daRcM0jthNdsmUHltF7QW/Cq4czrNWwvLMEpFK5aOgPG5mwbBdjuzSiU+NKtuNcunUzYFZvZznUbtOhTA3bibxaTlvg2Z1OtLsxZlJWpxU1xoy+nIDqEhSvAD3nwbcPw9xn4dguuOUN8PO3neyitarUiicaPsGH0R/SqFwjOtfubDuSUl5l7vpDTFi2iweurea7xdsYWPI2LBwG1Vo6pwINzGNnS7Mouy70oq6vWZ1SVNlQsKjzR9D8CfjzA5h2v7P4gQ96rOFjtKrUirdWvsX62PW24yjlNbYfOcVzM6JpVKUkr9xez3acS5OWAt/3dop3aFe4/zst3rnsgl3oItLSGPP7hX6WG7QL/SKt+Ng5Vrx8qDO5Lai87UQX7UTyCbr80IUMMpgePp1ShfVQEpW/nT6TRscPfufY6RR+eKoVFUsWsR3p4iUddxoXu5dC25egzUCdaX4RcmMS21nv5fBnytOaPwZdpzhrCH/aDmL+tp3oopUsXJLRN4zmaNJRXlj6AukZF7XIn1J5ijGGF2auZ2fsKd67r7FvFu9ju2DCzbBvBdz1CbR9Xou3m2RZwEXkWhEZAASLSP9Ml9cA3xt0zatqd4CH5oFJh8/aw/YFthNdtPpl6vNS85dYfnA546PH246jlDVfLt/NnOiDDLilNi1rlrUd5+LtXeHMNE+Mg/u/h4ZdbCfK07JrgRfEGesuwL/HvxOAe9wfTeVYhYbw8K/OMoSRnWHVF7YTXbS7a91Np5qd+HjdxyzZv8R2HKU8LmrPMYb9uImb6pbjiTY+OEt7w0yYeIdz7u5eCyCkpe1EeV5OxsCrGWP2eCKMjoFfpjMn4ZuHYNt8uK4v3DTEWdHNRySnJXP/vPs5eOog08KnUTmosu1ISnlE7MkzhL+3lEIF/JnzVCtKFPGh472NgWVj4NchUKUFdJ0MRX18qVfLcnMMvJCIfCIi80Xkt7OXXMiocluhIGdMvNnDsHwczOgBKYm2U+VY4QKFGd12NAZD/0X9SU5Lth1JKbdLS8+g75Q1nEhMZXz3MN8q3umpMPspp3g3uAcemKXF24NyUsBnAGuAV4DnMl2UN/IvALe9A+2Hw6Y5MDEcTh2xnSrHqgRVYXir4Ww6tonhK4fbjqOU270zfyt/7DzK0E4NqF+xhO04OZd0AibdDWu+htbPwd0TIMDHz5DmY3JSwNOMMeONMSuNMVFnL25Ppi6dCFzbG7pGwpFNzgz1I5ttp8qxNlXa8MjVjzBz20xmbsv1JfeV8ho//32Yjxbv4L5rqnJv0yq24+Tc8T3weXvY8zt0/BBufEVnmluQkwI+R0R6i0gFESl99uL2ZOry1bndObd4+hn47BbYuch2ohzr06gPLSq0YNifw9h4dKPtOErlul1xp3l2ejRXVyrBq3f40GIt+6OcmeYnD0H3mdA4wnaifCsnBbwHTpf5ciDKddGZZr6iUpgzQ71EJae7a/XXthPliL+fPyNaj6B0kdL0X9Sf+DPxtiMplWuSUtJ5YlIU/v7ChxFhFA7wkSNzN86GL2+HgEDo9QtUb2M7Ub52wQJujLnyPBcfPyFtPlOyinM2sytbw+wnYcEQyMiwneqCShcuzag2o4hJjOHFpS+SYbw/s1IXYozh5e/WsyXmJGO7NKJK6UDbkS7MGPh9HEx/AMo3cBoFwbVtp8r3cnSMkYg0EJHOIvLA2Yu7g6lcVriEcxagJg/CstHw7UOQ6v2n8gwNDuX5Zs+z9MBSPln3ie04Sl22yBV7mbnmAE+3q0Xb2uVsx7mw9DT4oR/8MgjqdYQec6BYsO1UimzORnaWiLwKtAXqAXOBW4FlwFduTaZyn38AhI+F0jWcP8b4A3DfFCjq3Ss+dandhejYaD5c+yGhZUO5rtJ1tiMpdUnW7jvB63M20uaqYPreWMt2nAtLToAZD8KOX6FVP7hxsE+tLZHX5eSVuAdoBxw2xvQEGgKF3JpKuY8ItOwLnb+Cw+ucyShx22ynypaIMKjFIGqUrMHzS5/n4KmDtiMpddGOnU6h96QogoMKMbZLI/z8vHzWdvx++LyDM/n1jnFw02tavL1MTl6NJGNMBpAmIsWBI4COgfu6eh2dGeopp2HCTbBrqe1E2QoMCGTsDWNJy0hjwKIBpKSn2I6kVI6lZxienrqGuFMpfNS9CaWKFrQdKXsH1ziHn8bvg+7fQJMethOp88hJAV8lIiWBT3FmoK8GVro1lfKMyk3h4QVQ7Ar4+i5YO8V2omxVK16NoS2HsuHoBkasHGE7jlI59u6CrSzdFseQjvW5urKXL9ayeS58cRv4F4Re86HGjbYTqSzkZBZ6b2PMCWPMR8DNQA9XV7rKC0qFOH+k1a6F7x+HhW86M069VLtq7ejZoCfTt05n9o7ZtuModUG/bY5h3G/bubdJZbo28+LFWoyBP8fD1G4QXMf5cF+uru1UKhsXLOAi0vrsBagKlHR9r/KKIiUh4lto3B0Wj4CZj0DaGdupstS3cV+alW/GG3+8wZZjW2zHUSpLe48m8szUtdSrUJw3OjVAvHW1svQ0mDcQfnrhnwWggq6wnUpdQE7ORjYn09XCwDVAlDEm234VESkMLMGZ8FYA+MYY82p2v6NnI7PMGOcQs19fh6rXOUuxBnrnontxSXF0ntOZwgUKMzV8KsULFrcdSal/SU5N5+7xy9l3LJEfnrqeqmW89HjvM6dcZzH8Ga59Em5+Hfx8ZGGZPCrXzkZmjLkj0+VmoAEQk4MMZ4AbjTENgUZABxFpkYPfU7aIwPUD4J7P4UCUM7nt6A7bqc6rbJGyjGo7ikOnDvHyspd1kRfldQbP2sDfBxMY06WR9xbvhIPwRQfYvgBuHw3th2nx9iGXckzAfpwini3jOOW6GuC6eO/gqvpHg7udxRqSTziHme1ZbjvReTUu15gBTQewaN8iPt/wue04Sv2/aX/tZfqq/Tx5Q03a1fXSruhD65yZ5sd2O4s8NetlO5G6SDkZA39PRMa5Lu8DS4HonGxcRPxFZC3OoWe/GGNWXF5c5TFVmzuTWALLwlcdYd0M24nOK6JuBB1COvDemvdYcUjfXsq+9fvjGTTrb1rVLEu/m6+yHef8tv7sHOMt4iyzXOsm24nUJcjJGHjmAwDTgN3GmN8vaifOYWjfAU8ZYzacc9ujwKMAVatWbbJnz56L2bRyt8RjMO1+2LMMbnjZOe+vl03ESUxN5L4f7+PEmRNMC59G+aLlbUdS+dSJxBTC31tGeobhh6daUaaYF655tfJTZ8LaFQ2clnfxCrYTqXPk2hg4MANY47p8c7HFG8AYcwJYBHQ4z22fGGOaGmOaBgfr+rpeJ7A03P8dhHaFhcPg+96Q5l2LqAQGBDLmhjEkpyXz7OJnSU1PtR1J5UMZGYZ+09YSk5DMhxFh3le8M9Lhpxdh7rNQqz30nKfF28dlWcBFJEBExgL7gC+AicBOEXnBdXvj7DYsIsGuljciUgS4CdicW8GVBxUoCHd9BG1fgujJMOl/kHTcdqp/qV6iOq+3fJ3o2GjeWfWO7TgqH3p/4XYWbollcHg9GlctZTvOv6WcdnrS/vwQmj/hHGFSqJjtVOoyZdcCHwUUA0KMMU2MMY2BukB1ERkPzLzAtisAC0VkHfAXzhj4D7kRWlkgAm2fh7s+gX0rYMLNcGyX7VT/0j6kPffXu5/Jmyczd+dc23FUPrJ4ayxjFmylU6OKdG9RzXacfzt52FlZbes8uHUk3PqWzjTPI7IcAxeR7UAtc84dRMQfiANuNcb8mZth9DhwH7H7d5gWAeIHXac4E968RGpGKg///DCbjm1i8m2TqVmqpu1IKo/bfzyR8PeWcUVQYb7rcx2BBS94kkfPifkbIjs7PWb3fA61/zOKqbxQboyBZ5xbvAGMMelAbG4Xb+VDQlpCrwXOOcYn3gEbLtQZ4zkBfgG83eZtAgsE0m9RP06lnLrwLyl1ic6kpdMncjXp6Ybx3cO8q3hvXwCftQeTDg/N0+KdB2VXwDeKyAPn/lBEugOb3BdJ+YSyNZ0iXrExfNMTlo72mjXUywWW4+02b7Pv5D4GLx/MhY60UOpSvT5nI9H743n73oZUD/aiMeVVnzst71Ih8PCvUKGh7UTKDbIr4H2APiKySERGicg7IrIY6Av09kw85dWKloEHZkGDe+DXITD7KfCSGeDNyjfjmbBn+GXPL3y18SvbcVQe9G3UfiJX7OWxNtXp0MBLDl3MyID5g+CHflCzndPyLlHJdirlJln29xhjDgDNReRGoD4gwDxjzK+eCqd8QEBhuHsClK4OS0bCib3Q+SvnBCmW9ajfg+jYaMZEjaF+mfo0LX/BISWlcmTjwQRe+m49LaqX5rlbatuO40hJhO8eg02zodnD0GEE+HtRl77KdRdcyMWTdBKbj1s7GWb3hTI1nAUiStmfjXsq5RRdf+zK6dTTTA+fTnCgrjWgLk98Uip3vr+MpJR0fux7PcFBXnC896kjMKUrHFjtrGfeorfXLbikci43F3JRKmcadYP7Z8LJQ84a6vujbCeiWMFijGk7htOpp51FXjK8o4tf+aaMDMOA6dEcOJ7EhxFh3lG8j2x21jSP2QhdJsG1fbR45xNawFXuurK1M7ktIBC+vB02zradiFqlajH42sGsPrKasVFjbcdRPuyjJTtYsCmGl26rS9MQLzjV7s5F8NktkH4Ges6FuuG2EykP0gKucl/wVc7M1/INYPoD8Ps46zPUw6uH07V2V77a+BXzd8+3mkX5pt+3x/HOz1sID61Az5YhtuPA6q9h0t3OJLWHF0ClMNuJlIdpAVfuUSzYOSVpvY7wi2tWbHqa1UgDmw0ktGwog34fxM74nVazKN9yKD6JvlPWUD24GCPuDkVsdlFnZMCCITD7SafH66GfoGRVe3mUNVrAlfsEFIF7voBW/SHqC5jcGZIT7MXxD2BU21EU8i9E/4X9SUxNtJZF+Y6UtAx6R64mOTWdj7qHUbSQxZndqUnw7UOwbDSE9XAmixYuYS+PskoLuHIvPz+46VW48z3Ytdg5B3H8fmtxyhctz8g2I9mVsIvXlr+mi7yoC3pz7ibW7D3BiHtCqVkuyF6Q03Ew8U74+zu4+XW4413wD7CXR1mXZwv4TxsOM2XlXpJS0m1HUQBhD0DENxC/z5kxe3CNtSgtKrTgqcZPMW/3PCZvnmwth/J+s9Ye4Mvlu3mo5ZWEh1a0FyR2q3Nkx+F1cO9EaPm0zjT3AinpKczZMYfTqaet7D/PFvAf1x/ixZnraTH8V4bP28T+49pdal2NG6DXfPAv6JwdabO9M4Y91OAh2lZuyzt/vcPaI2ut5VDea2vMSV74dj1Nq5Xixdvq2Auyayl8drNzStAHf4T6nexlUQDEJsby4doPueWbW3hp2UvWJsbm2YVcjDH8tfs4Xy7fxU8bDgNwS73yPNgyhOZXlrY7CSW/OxnjLDpxcA10GA7NH7fSmkhISaDLnC6kpKcw/Y7plClSxuMZlHc6mZxKx/d/JyE5jR/7tuKK4oXtBFk7xVmiuHR1iJjurG2urFkfu57IzZH8vPtn0jLSaF25NRF1ImhRsQV+knvt4Zwu5JJnC3hmB04k8fUfe5j6115OJKZSp3wQPVuG0LFRJQoH6HlxrUhJhJmPwOYf4JpHof1wK8s+bj62me5zu9MwuCEf3/wxBfx06cn8zhhD78jVzN8YQ+TDzWlR3cIHO2Ng0XBYPMKZad75a69Ynjg/Sk1PZf6e+UzeNJl1cesoGlCUu2reRdc6XalW3D2rTWoBP4+klPT/H9PafPgkJQMDuO+aqtzfohoVSxZx235VFjIyYMFgWP4e1GrvnK+4kOfP6DRr+yxe+f0VejXoxTNNnvH4/pV3+XTJTobN3cRLt9Xh0dY1PB8g7QzM6gPrZ0Cj7hA+BgoU9HyOfC4uKY4ZW2cwfct04pLiqFa8Gt3qdKNjzY4UDSjq1n1rAc+GMYY/dx5j4vLdzN94GBGhff0rePC6K2kWUkq71z3tr89g7nNwRT3nsJjinp8sNOSPIXyz9RveveFdbqx6o8f3r7zDip1H6TZhBTfXvYLx3cM8/78g8RhM7QZ7/4AbB8H1A3Symof9Hfc3kZsi+Wn3T6RmpNKyUksi6kTQslLLXO0mz44W8BzadyyRSX/uYcrKvSQkp1GvQnEebBnCnQ0rave6J21bADMehEJB0G0aVAj16O7PpJ+hx7we7EnYw9TwqW7rGlPe60hCMre/t4xihQow+8mWBBX28CFaR3dA5L3OYZZ3jYcGd3t2//lYakYqC/YsIHJTJNGx0QQWCKRTzU50rdOVK0tc6fE8WsAvUmJKGt+vOciXy3exNeYUpYsWpNs1VeneohrlS1iawJLfHN7gLPaSdALu/QKuau/R3R88dZDOP3SmXA55iMkAACAASURBVGA5Im+LpEgBHVbJL1LTM+j26Z9sOJDA931aUru8h4/33rPcaXmLH3SdAlWbe3b/+dSx5GPM2OJ0kx9JOkKVoCp0q9ONTjU7Uayg54fzztICfomMMfyx4yhfLN/Ngk0x+Ilwa4PyPHhdCE2qafe62yUcgild4PB6uHUkXPOIR3e/7MAyei/oTXj1cIa1Gqavdz4x9IeNTFi2i7FdGtGpcSXP7nzdDJjV21kONWKGM+NcudXGoxuZvGky83bNIyUjhesqXkdE3QhaVWrlsW7y7OS0gOuU23OICNfVLMt1Ncuy71giX/2xm6l/7eOHdYe4ulIJHrwuhPCGFShUQLvX3aJ4Beg5D759GOY+C8d2wi1Dwc8zz3erSq3+r737jovqSh8//jk0UbGhYKGNFbD3gsaeWELsUmMkppi6Kb9sYpJNvpvsN9+U3c3uxiSmi4ViL0FjSSxRsfcCKlIErEgRQdrM+f1xRxcNKOoMMwPn/Xr5EmbO3HsOd4aH+9xzz8Pz3Z7n68Nf0929O0G+QdWyX8Vy1hw5zw/bU3higE/1Bm8p4fe/w+aPwGegVgq0nhVUOKuhSg2lbDq7ieiEaA5cOkBdh7pMbD+RML8w2jS2zT+a1Bl4FRQUl7HioDZ7PenSNZq5aOn18P4+lrs/tKYz6GH9u7B7Dvg+CpO/Byfzzvy8uWtp4MXfXmT3+d3MGz2PLm5dqmW/SvVLunSN8V9up33zBiyeOQAnh2o6+yorgZ9fgcPR0DUExn0BDlZQW7wGyinKYdnpZcQmxnKx8CKeLp6E+oUyof0EGjo1tHT3KqRS6GYgpWRH0hUi41P4LfES9kIwtktLIgbq6OHVWKVbzWH3t7BuFrToqk1ua9CiWnabW5RLcFwwBgwsDlxME+cm1bJfpfoUFJcx/qsdZBeUEPfyoOq7lfR6DiyaBqnbYOg7MORNNdPcDBKzE4lOiGZN8hpKDCX0b9mfcP9wHvJ4CPtqyujdLxXAzSztSgHzd6axeG86+cVldPNsRMRAHWO7qPS6yZ1cB0tnQN0m2mpUzTtVy26PXznOtLXT6N28N3NGzrH6D71SdVJK/hR7iDVHzrHgqX4MbNesenacnaLNNM9Ng3FfQrfg6tlvLVFmKGNz+maiEqLYf3E/dR3q8libxwjzD6NtYwvc03+fVACvJgXFZSw/kMHc+FSSLxfQzKUO4f28Ce/njbtKr5vO+cMQHQzF1yAoEtqNrJbdLj21lA92fsDMrjN5qcdL1bJPxfzm7kjhg59P8OdRvrw4rF317PTsbogNBWmA4CjQDaye/dYCuUW5Wpr8ZCwXCi7g4eKhpcnbTaBRHdsrt6oCeDUzGCTbk7KIjE9lU+IlHO0Fj3ZpScTA1nT3UksgmkRephbEL52AR/8BvWeYfZdSSt6Pf5+VSSv5asRXDPYcbPZ9Kua1Py2b4G93MdTXje+m9cbOrhrS18eWwYrnoZEHhC2BZtX0R0MNdzL7JDGJMcQlx1GsL6Zfi36E+YcxxHOITWfMVAC3oJSsAubvTGXJvgyuFZfR3asxTw7UMaZzy+qbJFNTFedr6fTTGyDgTzDyA63muBkVlRUx7ZdpZF7LZHHgYjwbeJp1f4r5XM4vJnD2Nuo42PPzy4NoVNfMi7VICds/h98+BK/+EBIN9VXRnAehN+jZkr6FqMQo9l7Yi7O9M4FtAwn1C6VDkw6W7p5JWDyACyG8gPlAC8AAfCel/M+dXlNTAvgN14rLWLY/g8j4VFKyCnBrUIfH+/kQ1s8btwZqxul905fBurdg7w/gPw4mfgtO9cy6y/T8dILjgvF08WT+mPk4O6jLI7amTG9g2o97OHA2h+UvBNCplZlTq/pSiHsNDi6AzlNg/FfgqN439yuvOI/lp5cTmxjLuYJztKzfklC/UCa1n2STafI7sYYA3hJoKaU8IIRoAOwHJkgpT1T2mpoWwG8wGCRbT18mckcqW09dxsnejsCu2uz1rp4qvX5fpIRdc2D9O+DRE0JjwcXdrLvcmr6Vlza9xKT2k/gg4AOz7ksxvU9+SeSbrWf4+5SuTO3tZd6dXc+FxU9AylYY/CYMe0fNNL9Pp3NOE50YTdyZOIr0RfRp0Ydwv3CGeA2psdUDLb6Qi5TyPHDe+HW+ECIB8AAqDeA1lZ2dYJivO8N83Tlz+RoLdqaxZF86yw9m0tO7MREDWzOmcwsc7VV6vcqEgAEvQBMfbdGX70doq1i5+5ltl0O8hvBMl2f4/uj3dHPrxqT2k8y2L8W01h+/wDdbzxDa19v8wTsnTVsS+EoSjP8aeoSbd381kN6gZ2vGVqITotl9YTd17OsQ2EZLk/u6+lq6e1ajWq6BCyF0wO9AZynl1dueexZ4FsDb27tXWlqa2ftjDfKLSlmyL4N5O1NJu1JI84b/Ta83dVHp9XuSeQBiQqC0CILnQ5uhZtuV3qDnuV+f48DFA8wfO59OTavnljbl/qVkFTBu9nZau9Vn8cwB5i1SlLFfWwpYX6LV8G4zxHz7qoGullxlxekVxCTGkHktkxb1WxDiG8Lk9pNp7Fx7spUWT6GX64gLsBX4SEq5/E5ta2oK/U4MBsmWU5eYuyOVbaezcHKwY1y3VkQE6OjsUbOu65hVbrp21pN1CgL/DT2nmW1X2UXZBMcFYy/sWRS4qMZdf6tJrpfomfj1Di5cLSLu5UF4NjHjXIkTq2H5M+DSXMsGuakzxao6k3uGmMQYVp9ZzfWy6/R078njHR9nmNewGpsmvxOrCOBCCEcgDlgvpfz8bu1rYwAvL+lSPvPi01h2IIPCEj19dE2ICGjNI52aq/R6VRTlaSVJz2yCQa9r9ZTNNEP9yOUjTF83nQEtB/DliC+togCCcispJf9v8WFWHMpkbkQfhvqaaY6ElBA/Gza+D569tWpiLm7m2VcNojfo2Za5jaiEKHad34WTnRNj24wlzC8M/6b+lu6eRVk8gAttXdF5QLaU8tWqvKa2B/Ab8q6XsmRfOvN3pnE2u5CWjZx5vL8PoX29ca3vZOnuWTd9qVYEZX8kdJoIE+aAo3mWyIxNjOWj3R/xYvcXea7bc2bZh3L/Fu5K4y8rj/HqyPa8OtJMtxfpy4zvt7nQcQJM/MZs77eaIr8kn5VJK4lOiCbjWgbu9dy1NHmHybg6q2IuYB0BfBCwDTiKdhsZwDtSyrWVvUYF8FvpDZLNiZeIjE9le5KWXp/QvRXTA3TmvwXGlt08I3oPPPtCaAzUN/1SmVJK3tn+DmuS1zBn5BwGeqiVtazFofRcgr7ZSUC7pvw0vY95FmspumrM+PwGg16D4e+bfU0CW5acl0xMQgyrzqzietl1erj3IMw/jBHeI3C0M/P9+DbG4gH8fqgAXrnTF/OJjE9l+YFMrpfq6dvalScDdDzcsTkOKr1esROrYPmzWgGUsCXgZvqzsMLSQsLXhnP5+mUWBy6mlUsrk+9DuTfZBSUEfrENIQRxLw+iiTmyVrnp2qqAlxMh8F/Qa7rp91EDGKSB7ZnbiU6IZse5HTjaOTKm9RjC/MPUBNA7UAG8hsorLGXxvnTm7UwlI+c6rRo5M22AjpA+Xub5RWXrMvZpM9T1pVq95dYPmXwXaVfTCIkLQddQx7wx83CyV8fBUvQGScTcPexOzmbZ8wF08TRDpurcQS14l16HoHnQdrjp92HjrpVcY9WZVUQnRHM2/yxudd0I9g1mSocpNK2rVqK7GxXAazi9QfJbwkUi41OJP3OFOg52TOzhwfQAHf4trbPGrcXkpEJUEGQnw7jZ0D3U5Lv4Le03Xt3yKkEdgnhvwHsm375SNf/ccJLZm5L4eFIXQvt6m34HiWth2VNQr5lWGc+9dk+2ul1qXioxiTGsTFpJYVkh3dy6Ee4fzkjvkTjaqzR5VVl8IRfFvOztBI90asEjnVpw8oKWXl9xMIPYven0b+NKREBrHu7YHPvqKNRg7Zro4KkNsHgarHwOclJg6NsmXRlrhM8Inuz8JHOPzaWbezfGtR1nsm0rVbMp8SKzNyUxtZcnIX1MvFiLlLD7G1j3NrTqoa3816C5afdhowzSQPy5eKISotieuR0HOwfG6LQ0eedmnS3dvRpNnYHXILmFJSzaq81ez8y9jkfjujwxwIfgPl40rqfSupSVwJrX4OBC6DJVW5vawXSL5pQZynh247McuXyEqLFRasWoanT2SiGBs7fh2aQey18IMO1iLfoyWP827PkO/AJh0vdmX3vfFhSUFrAqaRUxiTGkXk2lWd1mBPkGMbXDVJrVrab66jWUSqHXYmV6A78mXCIyPoVdydk4O9oxsYcnEQE6fFs0sHT3LKt8dSjvAVp1qHqmu3Ul63oWQT8H4ezgTGxgLA2d1OUMcysq1TN5Tjzp2YXEvfwQ3k1NGFzLV78b8BI8/CHYcJlKUzh79SwxiTGsSFpBQWkBXZt1Jcw/jEd8HlFpchNRAVwBIOH8VebFp7LiYCbFZQYC2jYlIkDHCP9anl6/WZ/ZU1s1q2lbk2364KWDzFg3g0Geg/jPsP+oRV7M7M2lh1m8L4Mfp/dmhL8J09pXz2mr+108AWP/Dn2eMt22bYyUkp3ndhKVGMW2jG3Y29kzSjeKML8wurp1tXT3ahwVwJVb5BSUELs3nQU7UzmXV4Rnk7pMH6AjqI+X+WsiW6uzuyE2FKRBOxP3CTDZpheeWMinez/llZ6v8HSXp022XeVWi/ae5a1lR3lpWDveGGXCSxbnj2gzzYvzYWoktB9pum3bkMLSQlafWU10YjQpeSm4OrsS7BvM1A5TcaunVpszFxXAlQqV6Q1sPHGRuTtS2ZOaTV1Heyb38mD6AB3tm9fC9Hp2sjZDPTdNqxzVdapJNiul5M3f32RD2ga+ffhb+rfsb5LtKv91NCOPyd/E01fnyrwZfU2XUTq1HpY8CXUbQ9hiaFH7JmKl56cTmxjLitMryC/Np2PTjjzu/zijdKPUbZLVQAVw5a6OZeYxLz6VVYfPUVJm4KH2zYgI0DHM1908K1dZq8JsWDQN0rbDsHdh8J9NMkO9sLSQ0DWh5BbnsihwES3qtzBBZxXQJmwGzt6OwSD5+eVBpqvgt+d7+OVNaN5ZC94NW5pmuzZASsmu87uIToxma/pW7IU9D/s8TJh/GN3cuiFUPfNqowK4UmVXrhUb0+tpXLhahE/TejwxQMfU3p40dK4l6fWyElj9MhyJhW5h8Nh/wOHBzzSS85IJjQulXZN2RI6KVJN8TMBgkDw1by/bk7JYPHMAPbybmGCjetjwF9j1NXQYA5N/gDouD75dG1BYWkhcchzRCdGcyTuDq7MrUzpMIahDEM3rq1vlLEEFcOWeleoNrD9+gcgdqexLy6Gekz1TennyxAAd7dxrwS8zKWHrZ7Dl/0D3EAQvgLoPHhzWp67nja1vEOYXxtv93jZBR2u3L347zecbT/G38Z2YNkD34BssKYBlT8PJtdDveRj1Ua2YaZ55LZPYxFiWnV5Gfkk+/q7+hPuHM7r1aOrYm+72SuXeqQCuPJCjGXlExqfy8+FzlOgNDO7gxpMBOoZ0cKv56fXDi2D1S9DYR5uh7tr6gTf52d7PWHBiAZ8+9Clj24w1QSdrp62nLhMxdw8TunvweZAJ0rr5F7TJaheOwOhPoN9M03TUSkkp2XthL1EJUWzJ2IJAMNJnJOH+4XR3667S5FZCBXDFJLKuFROz+ywLdqVxKb8YXdN6TA/QMaWXJw1qcno9dQcsCgdhp9V39u73QJsrNZTy9PqnSchOIHpsNO2atDNRR2uPjJxCAmdvp3kDZ1a8GEA9pwdcSPLicW0C4/UcmPIT+I42TUet0PWy66xJXkNUQhRJuUk0rtOYqR2mEuQbpOZmWCEVwBWTKikzsO74BSJ3pHDgbC71neyZ2tuLJwb40MathqbXs5IgeirkZcLEOdB58gNt7lLhJYJ+DqKBUwNiHo3BxamG/tzMoLhMT9A3O0m+XMDqlwfRuln9B9tg0q+wOEK7zh22CFp2M0k/rc25a+eIPRnLslPLuFpyFd8mvoT7hzOm9RicHZwt3T2lEiqAK2ZzOD2XefGp/HzkHKV6yVBfNyICdAxuXwPT6wVXIDYM0nfBiPdh0OsPNEN974W9PLPhGYZ7D+efQ/6pUpZV9M6Ko0TvPss3j/didOcHPGPc9xOseQPcO2rBu5GHaTppJaSU7Lu4j+iEaDalb0IgGO49nHD/cHq691TvORugArhidpfyi4jZnc7C3Wlczi+mTbP6TA/QMbmXJy51alCdnNIiWPUiHFsKPaZp9Z8fYDZ55LFI/rn/n7zR+w2md1J1pO9m6f4M3lhymJlD2vD2mAeo/mUwwK/vQ/xsaP+IljavU3PWPigqK2JtylqiEqI4lXOKRnUaMaX9FIJ9g2npUntuh6sJVABXqk1JmYFfjp1n7o5UDqXn4lLHgam9PZk+QIfuQVOd1kJK2Px/8Ptn0HoIBM3XFvq4r01JXt/yOpvTN/PDIz/Qu8VdP6e11olzV5n49Q56eDdm4VP9cLC/z2VpSwphxUxIWA19nobRn4J9zfgj80LBBWITY1l6eil5xXl0aNKBcP9wxrYeq9LkNkoFcMUiDp7NYV58KmuOnqfMIBnm605EgI6H2jerGam7Q9Gw+k/a2ulhi6GJz31t5lrJNULWhFBQWsDiwMVqWcoK5F0vZdyX27leomfNnx7CrcF93tp07RLEhEDmARj1f9D/eZOWkrUEKSUHLh0gKiGKTWc3IZEM9xpOmH8YvZv3rhmftVpMBXDFoi5dLSJq91midqeRda2Etm71iQjQMamnJ/VtPb2e8jssehzsnSB0EXj2uq/NnM45TfjacPxd/flh1A842tXgWf33yGCQPLtgP1tOXiL22f701t1nxbhLiRA1FQoua4uz+AeatqPVrFhfzNrktUQnRpOYnUhDp4ZM7jCZEN8QWrm0snT3FBNRAVyxCsVletYe1dLrRzLyaODsQHBvL54YoDNt2cfqdvkURE2Baxe1+tAdx93XZuKS43h729s80fEJ/tznzybupO36eksSn607yfuBHZkx6D7vwz+zGRZPB0dnCI0Fj56m7WQ1ulhwkUUnF7H01FJyinNo17gd4f7hPNrmUeo61LV09xQTUwFcsSpSSg6m5zJ3Ryq/HD2PXkpG+DXnyYE6Ato2tc2U37XLWjWzjH1aneiAl+8rNfvRro+IPRnLP4b8g1G6UWboqG3ZkZTFtB93M7ZLS2aH9ri/98aBBRD3KjTroM00b+xt+o6amZSSQ5cPEZ0Qzca0jRikgaFeQ3nc/3H6tOhjm58ZpUpUAFes1oW8IqJ2pxG9+yxXCkpo7+5CxEAdE3t4PPjiHNWt9DqseA5OrIReT8LYf9zz5KhSfSkR6yNIykkiJjCGNo3amKmz1u983nUCv9hOk/pOrHpx4L1fbjEYYNPfYPvn0Ha4VgrUuZFZ+mouJfoS1qWuIyohihNXTtDAsQGT2k8ixC8Ezwaelu6eUg1UAFesXlGpnrgj55m7I4Xj567S0NmBkL7eTOvvg5erDaXXbwkaI4xBo+E9beJCwQWCfg6iiXMTYh6NoZ6jDY3fRErKDAR/t5NTF/JZ9dJA2rnf4y1epddh5fNwfAX0ijD+MWU78wouFV5i8cnFLDm1hOyibNo2akuYfxiBbQJr5fuhNlMBXLEZUkr2p+UwNz6VdccuIKVkpH9zIgbqGNDGhtLrB+ZD3GvQzNeYtvW6p5fvOr+LmRtnMspnFJ8O/tR2xm0if119nMj4VL4K68mjXe/xvuWCLIgJhYw9xssZf7KJmeZSSo5kHSEqIYqNqRvRSz1DPIcQ5h9G/5b9a917QNFUNYDbWL5SqYmEEPTWudJb58r5vOss3KWl1zecuIhv8wZEDNQxobsHdZ2svEJUzyegkRcsfgJ+GKEF8VY9qvzy/i3783KPl/nPgf/Qzb0b4f7hZuysdVl1KJPI+FSeGtT63oP35VPakrf5F2DqPOg0wTydNKESfQnrU9cTnRDNsSvHcHF0IdQ/lFDfULwa3tsffkrtZfVn4KWlpWRkZFBUVGShXpmfs7Mznp6eODraTrrP3IpK9aw+fI65O1JJOH+VRnUdCenrxbT+Png2sfJ04qUErUhGYRZM/hH8ql59zCANvLLpFbZnbmfu6Ll0d+9uxo5ah1MX8xn/5Q46ezQk+pn+ON7LYi0p27SiM/ZO2kxzT+teFOdy4WWWnFrC4pOLuVJ0BV1DHeH+4YxrO06lyZWbLJ5CF0L8BAQCl6SUnavymooCeEpKCg0aNKBpUxtKpd4DKSVXrlwhPz+f1q0fvGxlTSOlZG9qDpHxKaw/fhEpJY90bEHEQB39Wrta73si/6K2eMi5gzD6Y+j3XJVTuldLrhL8czAl+hIWPbaIZnWbmbmzlpNfVMr4L3dwtaiMNX8aRPOG97By2KEYWP0yuLaB8MXQRGe2fj6oo5ePEpUYxfrU9ZQZyhjsOZhwv3D6t+qPnbjP1eWUGssaAvhg4Bow/0ECeEJCAn5+ftb7i9oEpJQkJibi7/8A6zzXApm5Wno9Zs9ZcgtL8WvRgCcH6hjf3QNnRytMr5cUwvJnIDEO+j4Loz6u8gz1xOxEHl/7ON3cuvHtw9/iYFfzrnZJKXkh6gAbTlwk6ul+9G/TtKovhC0fw9ZPofVgCFpw38vamlOpvpQNaRuITojmSNYR6jvWZ2K7iYT4heDT8P5W8FNqB4sHcGMndEDcgwbw2hDYass4TaGoVM+qQ5nM3ZFK4oV8GtdzJNQ4e71VYytb1OIBCmisSlrFX3b8hRmdZ/Bar9fM3NHq9/3vyXy0NoF3xvrx7OC2VXtRWbFWWOboEuj+uFZYxsHJvB29R1nXs26mybOuZ6FrqCPUL5Tx7cZT37GG1AZQzMpmJrEJIZ4FngXw9ra9xRaU6ufsaE9wH2+CenuxOyWbyB2pfLv1DN/9nsyoTs2JCGhNH10T68ja2NnBI/8LTVrD2j/D3DHaGuoN777s5fh24zl0+RA/HfuJrm5dGeE9oho6XD12J1/hk3WJjO7UgmcequJ974XZWmnXszth+Hvw0P+zqpnmx7OOE5UQxbrUdZQaShnkMYhw/3ACWgWoNLliFuoMvArWrVvHK6+8gl6v5+mnn2bWrFm3PP/555/zww8/4ODggJubGz/99BM+PlqKzN7eni5dugDaHyirV6+ucB/WME5blpFTyIJdacTuSSfveikdWzYkYqCOcd1aWU96/fSvsCRCOwMPWwQtu971JcX6Yqb/Mp20q2nEBsbWiNTrpatFjP1iOw2cHVj90kAaOFdh8uaVM9qa5nkZMHEOdJ5s/o5WQamhlN/SfmNhwkIOXz5MPYd6TGg3gVC/UHSNdJbunmKjVArdRPR6PR06dGDjxo14enrSp08fYmJi6Nix4802mzdvpl+/ftSrV485c+awZcsWFi1aBICLiwvXrl27634sPc6a4nqJnpWHMonckcrJi/m41ncirK83j/f3oUUjKyiteOEYRAfB9VyYOhc63H3p1HPXzhEUF4R7PXeixkbZ9NrXpXoDYd/v4ljmVVa+OBDfFlW4nJAWr515CzsIiQHvfubv6F1kF2Wz9NRSFiUu4tL1S3g38CbMP4zxbcfj4uRi6e4pNs5mUuj34oOfj3Pi3FWTbrNjq4b8z2OdKn1+z549tGvXjjZttDRfSEgIq1atuiWADxs27ObX/fv3Z+HChSbto1J1dZ3sCe3rTUgfL3YmXyFyRypfbUliztYzjOncgogAHb18LJheb9EZnv4NYoK1WepjPoO+z9zxJa1cWvHJQ5/wwq8v8Ledf+OjQR9Zx+WB+/DpL4nsTc3h38Hdqxa8jyyBVS9AYx9tprmrZZeZPXHlBNEJ0fyS8gslhhIGthrI/wT8D4M8Bqk0uVLtzBbAhRAxwFCgmRAiA/gfKeWP5tqfuWRmZuLl9d+FFTw9Pdm9e3el7X/88UfGjBlz8/uioiJ69+6Ng4MDs2bNYsIE619koiYQQhDQthkBbZuRnn0jvX6WuCPn6eLRiIgAHYHdWlLHwQLp9YYt4clfYNnTsPYNyE7WrpPbVd6XQR6DeL7b83x9+Gu6u3cnyDeoGjtsGmuOnOeH7Sk8McCHCT087txYSvj977D5I/AZBMELoN59lhR9QKWGUjad3UR0QjQHLh2grkNdJrWfRKh/aK1et16xPLMFcCllqKm3eaczZXOp6BJDZWc/CxcuZN++fWzduvXmY2fPnqVVq1YkJyczfPhwunTpQtu2VZxxq5iEl2s93hnrz6sj27PioJZe/39LDvPxLwmE9fUmvL/Pvd1/bApO9SF4Iax/F3Z9DTmpWr1qp8pnKc/sNpMjWUf4ZM8n+Lv608WtS/X19wElXbrGm0sP092rMX95tOOdG5eVwM+vwOFo6BoC474AhzrV09FycopyWHZ6GbGJsVwsvIiniydv9nmT8e3G09Dp3ta6VxRzsKkUuiV4enqSnp5+8/uMjAxatfrjDOJff/2Vjz76iK1bt1Knzn9/2dxo26ZNG4YOHcrBgwdVALeQek4OhPfzIayvNzuSrhAZn8LszUl8veUMY7u0JGKgjh5ejasvPW1nD2M+AdfWsG4WzB2rTW5r0KLi5sKOjwd9THBcMK9vfZ3FgYtp4tykevr6AAqKy3hu4X7qONrzdXhPnBzukGq+ngOLpkHqNhj6Dgx5s9pnmidmJxKdEM2a5DWUGEoY0HIA7/V/j0Eeg7C/Q5ZEUaqbCuB30adPH06fPk1KSgoeHh7ExsYSHR19S5uDBw8yc+ZM1q1bh7u7+83Hc3JyqFevHnXq1CErK4sdO3bw5ptvVvcQlNsIIRjUvhmD2jcj7UoB83emsXhvOqsPn6ObZyMiBuoY26Ua0+v9ZmrXeJfOgO9HaNd6m1ecbWrs3JjPh33OE2uf4K3f32LOyDlWHVSklMxafpTkJaa0qQAAGyBJREFUy9dY8FS/O9+nn52izTTPTYOJ30G34GrrZ5mhjM3pm4lKiGL/xf3UdajLhHYTCPMPo21j9Qe3Yp2sfi10a5idvXbtWl599VX0ej0zZszg3Xff5f3336d3796MGzeOkSNHcvToUVq21Iow3LhdLD4+npkzZ2JnZ4fBYODVV1/lqaeeqnAf1jDO2qyguIzlBzKIjE/lzOUCmrnUIbyfN+H9vHGvrvT6+cMQHQzF1yAoEtqNrLTpslPL+OvOv/Js12d5ucfL1dO/+zB3Rwof/HyCP4/y5cVh7SpveHY3xIaCNEBwFOgGVkv/cotytTT5yVguFFzAw8WDUL9QJrSbQKM6tlVHXKk5rOI2sntlrQG8OtSWcVo7g0GyPSmLyPhUNiVewtFe8GiXlkQMbE13r2pYrjMvUwvil07Ao/+A3jMqbCal5P3491mZtJKvRnzFYM/B5u/bPdqflk3wt7sY6uvGd9N6Y2dXSSr82DJY8Tw08oCwJdDsDoHeRE5mnyQmMYa45DiK9cX0a9GPMP8whngOseqMhlI71MjbyBTF3OzsBIM7uDG4gxspWQXM35nKkn0ZrDx0ju5ejXlyoI4xnVve+Trug2jkATN+0dLpca9pM9RHfqit6FaOEIJ3+71LYnYis7bNYlHgIrwaWE8Zysv5xbwQdYBWjevyz6DuFQdvKWH75/Dbh+DVH0KioX4V10O/D3qDni3pW4hKjGLvhb042zvzWNvHCPMLo32T9mbbr6KYizoDtxK1ZZy26FpxGcv2ZzAvPpXkrALcGtTh8X4+hPXzxq2BmWZH68tg3Vuw9wfwHwcTvwWnP5abTM9PJzguGE8XT+aPmY+zg+UXqynTG5j24x4OnM1h+QsBdGpVQSpaX6r9gXJwAXSeAuO/Akfz9D2vOI/lp5cTmxjLuYJztKzfklC/UCa1n6TS5IpVUil0G1NbxmnLDAbJ76cvExmfypaTl3GytyOwqzZ7vaunGdLrUsKuObD+HfDoqdW7dnH/Q7Ot6Vt5adNLTGw3kQ8Hfmj6ftyjT35J5JutZ/jH1G5M6eX5xwbXc2HxE5CyFQa/CcPeMctM89M5p4lOjCbuTBxF+iL6tOhDuF84Q7yG1MjqbkrNoVLoimJidnaCob7uDPV1J/nyNebvTGPJvnSWH8ykp3djnhzYmtGdW+Bob6L0uhAw4AVo4qMt+vL9CAhfAu5+tzQb4jWEZ7o8w/dHv6e7e3cmtZ9kmv3fh/XHL/DN1jOE9vWuOHjnpGlLyV45AxPmQPcwk+5fb9CzNWMr0QnR7L6wmzr2dQhsE0ioXyi+rr4m3ZeiWJo6A7cStWWcNU1+USlLjen11CuFNG9Yh2n9fQjt601TFxOm1zMPaEuvlhZB0DxoO+yWp/UGPc/9+hwHLh5g/tj5dGpa/YsepWQVMG72dlq71WfxzAF/LCKTsV9bQlZfoi1i09p0E++ullxlxekVxCTGkHktkxb1WxDiG8Lk9pNp7Gx9tcIV5U5UCt3G1JZx1lQGg2TrqcvMjU/l91OXcXKwY1y3VkQE6OjsYaLrrLnp2tlr1ikI/Df0nHbL09lF2QTHBWMv7FkUuKhar+8WlpQx6et4LlwtIu7lQXg2ue16/YnVsPwZcGmuZRHcTHM2fCb3DDGJMaw+s5rrZdfp1bwX4f7hDPMaptLkis2qagBXq+9Xwbp16/D19aVdu3Z88sknf3g+MjISNzc3unfvTvfu3fnhhx8s0EvFkuzsBMP83Jk/oy+/vj6EkD5erD16nsDZ25n6TTxrjpynVG94sJ009oIZ67Qz19Uvwa8fgOG/23R1duWfQ/7JxcKLvL3tbQzyAfdXRVJK3l1xjJMX8/l3cPdbg7eUsOML7Zp3iy5aIZcHDN4GaWBr+lae3fAsE1ZNYMXpFYzWjWbJY0uIHB3Jwz4Pq+Ct1ArqXX4Xer2eF1988ZZyouPGjbulGhlAcHAwX375pYV6qViTdu4ufDi+M2+M8mXJPi29/mL0AVo2cuZxY3rdtb7T/W3cuRGELdaKoGz/HHJStGvJjtoKZ13duvJWn7f4aPdHfHfkO57r9pwJR1axhbvPsuJgJq+ObM9Q33KT7PRlWj/3z4WOE2DiNzf7eT/yS/JZmbSSmMQY0vPTca/nzis9X2Fy+8k2saSsopiabQXwX2bBhaOm3WaLLtp61JWoSjlRRalIQ2dHnhrUmogAHVtOXiIyPpW/rz/Jf347zYTurZgeoKv4Fqu7sXfUUuiubWHje9riL6ExUL8ZAMG+wRy+fJivD31Nl2ZdGOhhvlXNDqXn8uHPxxnq68afhpe7l7roKiyJgDO/waDXYfh7f7iXvaqS85KJSYhh1ZlVXC+7Tk/3nrzS8xWGew/H0c7RNANRFBtkWwHcAqpaTnTZsmX8/vvvdOjQgX/961+3vEap3eztBCP8mzPCvzmnL+YTGZ/K8gOZLN6XQd/WrjwZoOPhjs1xuJfZ60LAwD9pM9SXPws/jNBWMXPrgBCC9/q/R2J2Im9te4vFgYtp5fLHAjwPKrughBcW7se9gTP/Kr9YS266tprc5UR47AvoNf2et22QBrZnbic6IZod53bgaOfImNZjCPcPp2NT9cezooCtBfA7nCmbS1XKiT722GOEhoZSp04dvvnmG6ZPn86mTZuqq4uKDWnfvAEfTezCm6P8WLwvnXk7U3k+6gCtGjkzbYCOkD5eNLmX9HrH8dDQQ5uh/uNIbR3x1g9Rz7Ee/x72b0LiQnh9y+vMHzMfJ/v7TNtXQG+QvBJ7kKxrJSx7PuC/fT53UAvepdfh8aXQdvg9bfdayTVWnVlFdEI0Z/PP4lbXjZe6v8SUDlNoWtd8q7Qpii1Sk9juoirlRJs2bXqzhOgzzzzD/v37q7WPiu1pVM+RZwa3Yeufh/HdtF7omtXn03WJ9P/4N2YtO0LC+atV35hnb3j6V3BpAQsmwqEYAHwa+vC/A/+X41eO88ke0/7x++9fT7HtdBYfjO9EF0/jZYDEtVpJVPs68NSGewreqXmpfLz7Y0YsGcEnez6hiXMTPhv8GeunrGdmt5kqeCtKBWzrDNwCqlJO9Pz58zcrka1evVrdDqZUmb2d4JFOLXikUwtOXtDS6ysOZhC7N53+bVyJCGjNwx2bY19ZIZAbmui0oLl4Gqx8TpvcNvRtRviM4MnOTzL32Fy6uXVjfLvxD9znTYkXmb0piam9PAnp46XNNN/9Dax7G1r10FaMa9D8rtsxSAPx5+KJSohie+Z2HOwcGKMbQ5h/GJ2bdX7gfipKTacC+F04ODjw5ZdfMmrUqJvlRDt16nRLOdEvvviC1atX4+DggKurK5GRkZbutmKDfFs04ONJXXhrtC+L9qYzf2cazy3cj0fjujwxwIfgPl40rneHNHjdxhC+DNa8Bls/1QqhjP+KP/X4E8eyjvG3XX/Dz9XvgVYkO3ulkFdjD9GxZUP+NqEzwqCH9W/Dnu/ALxAmfV/hmu3lFZQWsCppFTGJMaReTaVZ3Wa80P0FpnaYSrO6ze67b4pS26iFXKxEbRmnUnVlegO/JlwiMj6FXcnZODvaMbGHJxEBOnxbNKj8heWrfHkPgOAosuwkwT8HU8ehDrGBsTR0anjP/Skq1TN5Tjzp2YXEvfwQ3i56rWra6Q0Q8HKFVdPKO3v1LDGJMaxMWsm10mt0bdaVMP8wHvF5BEd7NZtcUW5QK7HZmNoyTuX+JJy/yrz4VFYczKS4zEBA26ZEBOgY4X+H9Hr5OtvhSzmov8qMdTMY5DmI/wz7D3bi3qbAvLn0MIv3ZfDj9N6M8NBrq8JdPAFj/w59nqrwNVJKdp7bSVRiFNsytmFvZ88o3SjC/MLo6tb1Xn8MilIrqABuY2rLOJUHk1NQQuzedBbsTOVcXhGeTeoyfYCOoD5eNKpbwVns2d0QGwrSACHRLCxI5tO9n/JKz1d4usvTVd7vor1neWvZUV4a1o43uhZrM82L82FqJLQf+Yf2haWFrD6zmujEaFLyUmjq3JQg3yCmdpiKWz23+/8BKEotoAK4jakt41RMo0xvYOOJi8yNT2VPSjZ1He2Z3MuD6QN0tG9+W3o9OxmigiA3DTnuK97M3cuGtA18+/C39G/Z/677OpqRx+Rv4umrc2XeoBzsl83QrreHLYYWt042S89PJzYxlhWnV5Bfmk+npp0I9w9nlG6USW9jU5SaTAVwG1NbxqmY3vFzecyLT2XloXOUlBl4qH0zIgJ0DPN1/+/iKoXZsGgapG2ncMibhObtIbc4l0WBi2hRv0Wl284tLCFw9nYMBsmGQSdx2fSutnph6CJoqN15IaVk94XdRCVEsTV9K/bCnod1DxPuH07XZl3/sG6Coih3pgK4jakt41TMJ7ughJg9Z1mwM40LV4vwaVqPJwbomNrbk4bOjlBWAqtfhiOxJHceT2jxSdo1aUfkqMgKJ5EZDJKn5u0lPukS27r/hvvxn6DDGJjyIzjVp7C0kLjkOKITojmTdwZXZ1emdphKkG8Q7vXcK+ihoihVoQK4jakt41TMr1RvYMPxi0TGp7A3NYd6TvZM6eXJEwN0tHOrD1s/gy3/x3pdT94QWYT5hfF2v7f/sJ0vfjvNnI1H2OA1H6/LW6Df8zDqIzILLxCbGMuy08vIL8nH39Wfxzs+zijdKOrYm7AGuqLUUlUN4Oo+8CpYt24dr7zyCnq9nqeffppZs2bd8vxrr73G5s2bASgsLOTSpUvk5uYCYG9vT5cuXQDw9vZm9erV1dt5pdZxtLfj0a4tebRrS45l5hEZn0rsHu2+8sEd3Hgy4EmGTPBh1M8vc7i5BwsSo+nm1o2xbcbe3MbWU5dZ+OtuNjT+As+s08jRn7LXpydRW15nS8YWBIKHfbQ0eTe3bipNrigWYNYzcCHEaOA/gD3wg5Tyjus5WuMZuF6vp0OHDreUE42Jiam0Gtns2bM5ePAgP/30EwAuLi5cu3btrvux9DiVmi3rWjGxe86yYFcaF68Wo2tajzf9rzDy2Bs807QeCc51iQqMpX2T9mTkFPLqF1F8zSe4OF5n7aCZROUcIik3icZ1Gt9Mk9/p2rmiKPfP4mfgQgh74CvgYSAD2CuEWC2lPHG/2/x0z6ckZieaqosA+Ln68Vbftyp9/l7LicbExPDBBx+YtI+K8qCaudThpeHtmTmkLb8cu0DkjhRe2F6Xjk7v8y/xT2a6Xef19c8QOX4V38+N5GO7T1nQtDHLG7lxNWUpfq5+fBjwIWNaj8HZwdnSw1EUBfOm0PsCSVLKZAAhRCwwHrjvAG4JVS0nCpCWlkZKSgrDh/+3iENRURG9e/fGwcGBWbNmMWHCBLP3WVEq42hvx7hurRjXrRVHMnKJjE/licPv87L+M/7RKouXFj6Mu/MVprg2RdjZMcJjIGH+YfR076nS5IpiZcwZwD2A9HLfZwD9HmSDdzpTNpeqlBO9ITY2lilTpmBvb3/zsbNnz9KqVSuSk5MZPnw4Xbp0oW3btmbrr6JUVVfPxnwe1J3LY/xZtLMTo48/zxrXXFwcXHiyYzjBHafR0qWlpbupKEolzBnAK4pyf4iGQohngWdBm+RlbapSTvSG2NhYvvrqq1seu9G2TZs2DB06lIMHD6oArlgVtwZ1eOmRzhQP3cyAXfMZ2Xcq9Z3vsNa6oihWwZz1wDMAr3LfewLnbm8kpfxOStlbStnbzc36llgsX060pKSE2NhYxo0b94d2J0+eJCcnhwEDBtx8LCcnh+LiYgCysrLYsWNHpdfOFcXS6jg5MH7wDBW8FcVGmPMMfC/QXgjRGsgEQoAwM+7PLKpSThS0yWshISG3pNcTEhKYOXMmdnZ2GAwGZs2apQK4oiiKYhLmvo1sLPBvtNvIfpJSfnSn9tZ4G1l1qS3jVBRFUe7M4reRAUgp1wJrzbkPRVEURamNzHkNXFEURVEUM7GJAG5N67WbQ00fn6IoimJ6Vh/AnZ2duXLlSo0NclJKrly5grOzWt1KURRFqTqrL2bi6elJRkYGly9ftnRXzMbZ2RlPT09Ld0NRFEWxIVYfwB0dHWndurWlu6EoiqIoVsXqU+iKoiiKovyRCuCKoiiKYoNUAFcURVEUG2TWldjulRDiMpBmwk02A7JMuD1LqkljgZo1npo0FqhZ41FjsV41aTymHouPlPKuxUGsKoCbmhBiX1WWo7MFNWksULPGU5PGAjVrPGos1qsmjcdSY1EpdEVRFEWxQSqAK4qiKIoNqukB/DtLd8CEatJYoGaNpyaNBWrWeNRYrFdNGo9FxlKjr4EriqIoSk1V08/AFUVRFKVGUgFcURRFUWyQzQdwIcRUIcRxIYRBCNH7tufeFkIkCSFOCiFGVfL61kKI3UKI00KIRUIIp+rp+Z0Z+3LI+C9VCHGoknapQoijxnb7qrufVSWE+KsQIrPcmMZW0m608XglCSFmVXc/q0II8XchRKIQ4ogQYoUQonEl7az22Nzt5yyEqGN8DyYZPx+66u9l1QghvIQQm4UQCcbfBa9U0GaoECKv3PvvfUv0tSru9r4Rmi+Mx+aIEKKnJfp5N0II33I/70NCiKtCiFdva2PVx0UI8ZMQ4pIQ4li5x1yFEBuNMWOjEKJJJa+dbmxzWggx3SwdlFLa9D/AH/AFtgC9yz3eETgM1AFaA2cA+wpevxgIMX79DfC8pcdUQR//CbxfyXOpQDNL97EKY/gr8MZd2tgbj1MbwMl4/Dpauu8V9PMRwMH49afAp7Z0bKrycwZeAL4xfh0CLLJ0v+8wnpZAT+PXDYBTFYxnKBBn6b5WcTx3fN8AY4FfAAH0B3Zbus9VGJM9cAFtgRKbOS7AYKAncKzcY58Bs4xfz6ro8w+4AsnG/5sYv25i6v7Z/Bm4lDJBSnmygqfGA7FSymIpZQqQBPQt30AIIYDhwFLjQ/OACebs770y9jEIiLF0X6pBXyBJSpkspSwBYtGOo1WRUm6QUpYZv90F2Fot2Kr8nMejfR5A+3yMML4XrY6U8ryU8oDx63wgAfCwbK/MajwwX2p2AY2FEC0t3am7GAGckVKacqVNs5NS/g5k3/Zw+c9GZTFjFLBRSpktpcwBNgKjTd0/mw/gd+ABpJf7PoM/fqibArnlfhlX1MbSHgIuSilPV/K8BDYIIfYLIZ6txn7dj5eMKb+fKkk7VeWYWZsZaGdDFbHWY1OVn/PNNsbPRx7a58WqGVP9PYDdFTw9QAhxWAjxixCiU7V27N7c7X1ji5+TECo/CbGV43JDcynledD+eATcK2hTLcfI6uuBAwghfgVaVPDUu1LKVZW9rILHbr9nriptzKaK4wrlzmffA6WU54QQ7sBGIUSi8a/Ganen8QBzgL+h/Xz/hnZZYMbtm6jgtRa5z7Eqx0YI8S5QBkRVshmrOTa3sfrPxv0QQrgAy4BXpZRXb3v6AFr69ppx/sVKoH1197GK7va+saljY5xXNA54u4Knbem43ItqOUY2EcCllCPv42UZgFe57z2Bc7e1yUJLPzkYzzIqamM2dxuXEMIBmAT0usM2zhn/vySEWIGWHrVIkKjqcRJCfA/EVfBUVY5ZtajCsZkOBAIjpPGiVwXbsJpjc5uq/JxvtMkwvg8b8cdUotUQQjiiBe8oKeXy258vH9CllGuFEF8LIZpJKa2umEYV3jdW8zmpojHAASnlxdufsKXjUs5FIURLKeV546WLSxW0yUC7vn+DJ9o8LZOqySn01UCIcTZta7S/6vaUb2D8xbsZmGJ8aDpQ2Rm9JYwEEqWUGRU9KYSoL4RocONrtMlVxypqa2m3XaObSMX93Au0F9qdAU5oabfV1dG/eyGEGA28BYyTUhZW0saaj01Vfs6r0T4PoH0+NlX2h4qlGa/N/wgkSCk/r6RNixvX8IUQfdF+912pvl5WTRXfN6uBJ4yz0fsDeTdSulaq0iyirRyX25T/bFQWM9YDjwghmhgvFz5ifMy0LDW7z1T/0IJBBlAMXATWl3vuXbTZtieBMeUeXwu0Mn7dBi2wJwFLgDqWHlO5fkYCz932WCtgbbm+Hzb+O46W3rV4vysZywLgKHAE7QPQ8vbxGL8fizaL+Iy1jsf4XkkHDhn/3ZitbTPHpqKfM/Ah2h8lAM7Gz0OS8fPRxtJ9vsNYBqGlJ4+UOyZjgedufH6Al4zH4TDaxMMAS/e7krFU+L65bSwC+Mp47I5S7u4ba/sH1EMLyI3KPWYzxwXtD4/zQKkxzjyFNhfkN+C08X9XY9vewA/lXjvD+PlJAp40R//UUqqKoiiKYoNqcgpdURRFUWosFcAVRVEUxQapAK4oiqIoNkgFcEVRFEWxQSqAK4qiKIoNUgFcUWyAEEJvrNZ0TAixRAhR7wG2NVQIEWf8epy4Q9U3IURjIcQL5b5vJYRYWll7RVGqjwrgimIbrkspu0spOwMlaPfS3mRc1OOeP89SytVSyk/u0KQxWmWyG+3PSSmn3KG9oijVRAVwRbE924B2Qgid0Gpgf422prSXEOIRIcROIcQB45m6C9ys/50ohNiOtjwvxscjhBBfGr9uLrT65oeN/wKAT4C2xrP/vxv3eczY3lkIMVdotasPCiGGldvmciHEOqHVQv7M+Li9ECLSmEU4KoR4rTp/aIpS09jEWuiKomiM65KPAdYZH/JFW+XpBSFEM+AvwEgpZYEQ4i3gdWMA/R6tdG4SsKiSzX8BbJVSThRC2AMuaPWOO0spuxv3ryvX/kUAKWUXIYQfWgWtDsbnuqNVBSsGTgohZqNVbfIwZhEQQjR+sJ+GotRu6gxcUWxDXSHEIWAfcBZt7W+ANKnVhAboD3QEdhjbTgd8AD8gRUp5WmpLLy6sZB/D0arGIaXUSynz7tKnQWhL5CKlTATSgBsB/DcpZZ6Usgg4YexHMtBGCDHbuJ787RXDFEW5B+oMXFFsw/UbZ8E3GGtAFJR/CNgopQy9rV13zFNusqKSiTcUl/taDzhIKXOEEN2AUWhn70H8saSsoihVpM7AFaXm2AUMFEK0AxBC1DOmtBOB1kKItsZ2oZW8/jfgeeNr7YUQDYF8oEEl7X8Hwo3tOwDeaIWDKmRM8dtJKZcB7wE972FsiqLcRgVwRakhpJSXgQggRghxBC2g+xnT2M8Ca4yT2NIq2cQrwDAhxFFgP9BJSnkFLSV/TAjx99vafw3YG9svAiKklMVUzgPYYkzvRwJv3884FUXRqGpkiqIoimKD1Bm4oiiKotggFcAVRVEUxQapAK4oiqIoNkgFcEVRFEWxQSqAK4qiKIoNUgFcURRFUWyQCuCKoiiKYoP+PwdB0QQyYNHCAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10cea4ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (7,5))\n",
    "\n",
    "target = np.repeat(0, 1000) \n",
    "pred = np.arange(-10,10, 0.02)\n",
    "\n",
    "quantiles = [0.25, 0.5, 0.75]\n",
    "\n",
    "losses_quan = [[quan(target[i], pred[i], q) for i in range(len(pred))] for q in quantiles]\n",
    "\n",
    "# plot \n",
    "for i in range(len(quantiles)):\n",
    "    ax1.plot(pred, losses_quan[i], label = quantiles[i])\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Quantile Loss')\n",
    "ax1.set_title(\"Loss with Predicted values (Color: Quantiles)\")\n",
    "ax1.legend()\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### **All regression losses in single plot**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10ce95278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1, figsize = (10,6.5))\n",
    "\n",
    "target = np.repeat(0, 1000) \n",
    "pred = np.arange(-10,10, 0.02)\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_mse = [mse(target[i], pred[i]) for i in range(len(pred))]\n",
    "loss_mae = [mae(target[i], pred[i]) for i in range(len(pred))]\n",
    "loss_sm_mae1 = [sm_mae(target[i], pred[i], 5) for i in range(len(pred))]\n",
    "loss_sm_mae2 = [sm_mae(target[i], pred[i], 10) for i in range(len(pred))]\n",
    "loss_logcosh = [logcosh(target[i], pred[i]) for i in range(len(pred))]\n",
    "loss_quan1 = [quan(target[i], pred[i], 0.25) for i in range(len(pred))]\n",
    "\n",
    "\n",
    "losses = [loss_mse, loss_mae, loss_sm_mae1, loss_sm_mae2, loss_logcosh, loss_quan1]\n",
    "names = ['MSE', 'MAE','Huber (5)', 'Huber (10)', 'Log-cosh', 'Quantile (0.25)']\n",
    "cmap = ['#d53e4f',\n",
    "'#fc8d59',\n",
    "'#fee08b',\n",
    "'#e6f598',\n",
    "'#99d594',\n",
    "'#3288bd']\n",
    "\n",
    "for lo in range(len(losses)):\n",
    "    ax1.plot(pred, losses[lo], label = names[lo], color= cmap[lo])\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "ax1.legend()\n",
    "ax1.set_ylim(bottom=0, top=40)\n",
    "\n",
    "# fig.savefig('/Users/princegrover/Documents/msan/Machine-Learning/images/all_regression.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Classifications loss\n",
    "\n",
    "* Binary cross entropy \n",
    "* Negative log likelihood\n",
    "* Cross entropy\n",
    "* Kullback–Leibler divergence\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Binary cross entropy or negative log likelihood"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [],
   "source": [
    "def bin_ce(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: binary cross entropy loss\n",
    "    \"\"\"\n",
    "    loss = np.where(true==1, np.log(pred), np.log(1-pred))\n",
    "    return -np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl8XHW9//HXJ+tkT9MkXdKdtpRC2VqlCCKbV0QpXkQuKogrV/SKC+7LD716vV646nVHEERQQAUUFAQBoQWkQMtOy1K60L1p0jb7/vn9cU7C0GaZJpnMzOn7+XjMI3POnJnzmZN23vl+z3e+x9wdERGRdJOV6gJERET6o4ASEZG0pIASEZG0pIASEZG0pIASEZG0pIASEZG0pICSyDOzr5rZrwZ5/INm9tBY1jQQM5thZm5mOeHy38zsgjHY7zfN7LdJeN1rzew7o/26cmBQQMmImdl6Mzs11XUMxN2/6+4fhX0DYDjC99tqZk1mtj38EC4evYpf4+5vd/ffJFhT2v4ORIZDASUyPGe4ezFwNLAI+PreG1hA/8dEhkn/eSSpzOxjZrbGzOrN7HYzmxyuNzP7oZntMLMGM3vWzA4LHzvdzFaZWaOZbTazzw/w2hvMbGF4//1hy+jQcPkjZvbn8H5899Wy8OfusAV0bNzr/a+Z7TKzdWb29kTen7tvBv4G9Nb+gJn9l5k9DLQAs8yszMyuNrOt4fv5jpllh9tnh/vdaWZrgXfs9R4fMLOP7nU8V4fHZpWZHW1m1wPTgL+E7+mL4baLzeyfZrbbzJ42sxPjXmemmS0NX+ceoHKg9xju751xyzlmVmtmR4fLfzSzbWa2x8yW9f4O+nmdfbpSw9/Z7PB+fngsXg1bpleYWUH4WKWZ/TV8L/Vm9qDCP/r0C5akMbOTgf8GzgEmARuAm8KH/wU4AZgLlIXb1IWPXQ38u7uXEHzw/2OAXSwFTgzvvwVYG75m7/LSfp7T+3i5uxe7+yPh8jHAiwQf1JcBV5uZJfAepwKnA0/GrT4fuBAoIXjP1wJdwGzgKIL33hs6HwPeGa5fBJw9yL7eA3wT+ABQCiwB6tz9fOBVwladu19mZjXAHcB3gArg88AtZlYVvtwNwMrw/X4bGOw8143Ae+OW3wbsdPcnwuW/AXOAauAJ4HeDvNZgvkfw7+FIgmNVA/y/8LFLgE1AFTAB+CqgedoiTgElyfR+4Bp3f8Ld24GvAMea2Qygk+ADfB5g7r7a3beGz+sE5ptZqbvvivsg3NtSgiACeDNBGPYuDxRQA9ng7le5ezfwG4JAnTDI9n82s93AQ+F+vhv32LXu/ry7dxGEw+nAZ9y92d13AD8Ezg23PQf4P3ff6O714XsYyEeBy9z9cQ+scfcNA2x7HnCnu9/p7j3ufg+wAjjdzKYBbwC+4e7t7r4M+Msg+70BWGJmheHy+whCCwB3v8bdG8Pf8TeBI8ysbJDX20f4x8CFwGfdvd7dGwmOae9x6iT4nUx39053f9A1kWjkKaAkmSYTtCAAcPcmglZSjbv/A/gp8DNgh5ldaWal4abvJvhQ3xB2Qx1L/5YCbzazSUA28AfguDAAy4Cn9qPWbXF1toR3Bxv48C53L3f36e7+CXdvjXtsY9z96UAusDXsntoN/JKgtQHBMYrffqDAAZgKvDLE+4jf73t69xnu93iCD/nJwC53b05kv+6+BlgNnBGG1BKC0Ortovyemb1iZg3A+vBpA3YZDqAKKARWxtV7V7ge4HJgDfB3M1trZl/ez9eXDKSAkmTaQvBBCYCZFQHjgc0A7v5jd18IzCfo2vlCuP5xdz+T4EP8zwTBs4/wg7MF+BSwzN0bCILmQuAhd+/p72mj89YGFb+PjUA7UBkGWrm7l7p773marQTB02vaIK+7ETgogX32bnt93D7L3b3I3b8X7nNc+PtIZL/wWjffmcCq8NhD0Jo6EziV4I+CGeH6/rpHmwlCKNjAbGLcYzuBVuDQuHrLwoEohC20S9x9FkFAfs7MThmiZslwCigZLblmFou75RB8qH3IzI40s3yCLptH3X29mb3BzI4xs1yCD642oMfM8sIBD2Xu3gk0AP0FTa+lwH/wWnfeA3st7602fL1ZI3y/CQm7Lf8OfN/MSs0sy8wOMrPersg/ABeb2RQzGwcM1jL4FfB5M1togdlm1vsHwHZe/55+S9DieVvYyomZ2YlmNiXsFlwBfCs83scDZwzxVm4iOHd2EWHrKVRCEMB1BOHz3X2f2udp4NDw30OMoDsQgPCPiauAH5pZNYCZ1ZjZ28L77wzfrwF7gG4G/3chEaCAktFyJ8FfwL23b7r7vcA3gFsI/mo/iNfOKZQSfCDtIuheqiPoxoFgkMH6sMvo4wTnsgaylOBDctkAy68Tdt/9F/Bw2JW0eL/f6f77AJAHrCJ4vzcTdLVBcAzuJvjwfgK4daAXcfc/EtR+A9BI0LqsCB/+b+Dr4Xv6vLtvJGjZfJUglDcStFB7/8+/j2BgSD1wKXDdYG8gDNpHgDcBv4976DqC39/m8P0tH+Q1XgL+E7gXeJng/F28LxF04y0Pf/f3AgeHj80Jl5vCOn7u7vcPVrNkPtN5RhERSUdqQYmISFpSQImISFpSQImISFpSQImISFoa9ozOyVBZWekzZsxIdRkiIpJEK1eu3OnuVUNtl1YBNWPGDFasWJHqMkREJInMbLAZU/qoi09ERNKSAkpERNKSAkpERNKSAkpERNKSAkpERNKSAkpERNKSAkpERNJSpALqtqc2s3LDrlSXISIioyBSAXXp7c9z21ObU12GiIiMgkgFlAG6vJWISDREKqCyzHCUUCIiURCpgDKDHuWTiEgkRCqgwNTFJyISEZEKqCwD1MUnIhIJkQooMw2SEBGJimgFFEaPEkpEJBKiFVBqQYmIREakAioYZi4iIlEQqYACtaBERKIiUgEVdPEpoUREoiB6AZXqIkREZFREKqCyzNSCEhGJiEgFlKEWlIhIVEQroMw0F5+ISEREK6DQIAkRkaiIVkBpkISISGRELKCUUCIiURGtgAJdsFBEJCKiFVAGPT2prkJEREZDpAJKl3wXEYmOSAUUaC4+EZGoSGpAmdlnzex5M3vOzG40s1iS96f2k4hIRCQtoMysBrgYWOTuhwHZwLnJ2h/oe1AiIlGS7C6+HKDAzHKAQmBLMneWlaUuPhGRqEhaQLn7ZuB/gVeBrcAed/97svYHwSXflU8iItGQzC6+ccCZwExgMlBkZuf1s92FZrbCzFbU1taOcJ/q4hMRiYpkdvGdCqxz91p37wRuBd6090bufqW7L3L3RVVVVSPaoYEmixURiYhkBtSrwGIzKzQzA04BVidxfxrFJyISIck8B/UocDPwBPBsuK8rk7U/UBefiEiU5CTzxd39UuDSZO4jno3VjkREJOkiNZNElhk9akGJiERCpAIq6OJLdRUiIjIaohVQmAJKRCQiIhVQmK4HJSISFZEKqCx18YmIRMaQAWVmRWaWFd6fa2ZLzCw3+aXtP3XxiYhERyItqGVALJyd/O/A+cC1ySxquExdfCIikZFIQJm7twBnAT939/cAhya3rOHRKD4RkehIKKDM7Fjg/cAd4brs5JU0fFma6khEJDISCajPAF8B/uTuz5vZLOD+5JY1fPqirohINAw51ZG7LwWWAoSDJXa6+8XJLmw4gpkkUl2FiIiMhkRG8d1gZqVmVgQ8B6wysy8kv7T9l5Nl9CihREQiIZEuvvnu3gC8C/gbwQUIz09qVcOUnWV0dvekugwRERkFiQRUbvi9p3cBt4cXH0zLZkpOttGtFpSISCQkElC/BNYDRcAyM5sONCSzqOHKycqiSwElIhIJiQyS+DHw47hVG8zspOSVNHw5WUZXj7r4RESiIJFBEmVm9gMzWxHevk/Qmko7OdlGV7daUCIiUZBIF981QCNwTnhrAH6dzKKGK1tdfCIikZHIJd8Pcvd3xy1/y8yeSlZBI5GTpUESIiJRkUgLqtXMju9dMLPjgNbklTR8OdkaZi4iEhWJtKA+DlxnZmXh8i7gguSVNHxqQYmIREcio/ieBo4ws9JwucHM3g08k+zi9ldOdpYGSYiIRETCV9R194ZwRgmAHyapnhHRMHMRkegY7iXfbVSrGCU5WVn0OJqPT0QkAoYbUGmZADnZQW5qqLmISOYb8ByUmT1L/0FkwISkVTQC2Vm9AdVD3rCzV0RE0sFggyTeOWZVjJKcLLWgRESiYsCAcvcNY1nIaOgLKI3kExHJeJHqB8vJDt6OvqwrIpL5IhVQsdxsANo7FVAiIpkukdnMzzCzjAiy/JygzLau7hRXIiIiI5VI8Pwb8LKZXWZm85Jd0Ej0tqDaOhVQIiKZbsiAcvfzgKOAV4BrzewRM7vQzEqSXt1+iuWGLSh18YmIZLyEuu7CKY5uBm4CJgH/CjxhZp9KYm37TS0oEZHoSOQc1BIz+xPwAJALvNHd3w4cAVyS3PL2TyxHASUiEhWJXG7j3cAP3X1Z/Ep3bzGzjwz2RDMrB34FHEYwK8WH3f2R4RY7lN4uvvYudfGJiGS6RC63cYGZTTSzJQQh87i7bwsfu2+Ip/8IuMvdzzazPKBwxBUPQl18IiLRkUgX30eAx4CzgLOB5Wb24QSeVwacAFwN4O4d7r57ZOUOLr93kIRaUCIiGS+RLr4vAke5ex2AmY0H/glcM8TzZgK1wK/N7AhgJfBpd2+O38jMLgQuBJg2bdr+Vb+X176oqxaUiEimS2QUXx3QGLfcGK4bSg5wNPALdz8KaAa+vPdG7n6luy9y90VVVVUJvOzANEhCRCQ6EmlBrQEeNbPbCM5BnQk8Y2afA3D3HwzwvE3AJnd/NFy+mX4CajTlZhtZpu9BiYhEQSIB9Up463Vb+HPQL+q6+zYz22hmB7v7i8ApwKrhlZkYM6MgN5uWDrWgREQyXSKj+L4FYGbF4XLTfrz+p4DfhSP41gIfGk6R+6MklktTe2eydyMiIkk2ZECZ2WHA9UBFuLwT+IC7Pz/Uc939KWDRSIvcH8WxHBrbusZylyIikgSJDJK4Evicu0939+kEs0dcldyyhq9EASUiEgmJBFSRu9/fu+DuDwBFSatohEpiuTS2qYtPRCTTJRJQa83sG2Y2I7x9neB8UlpSC0pEJBoSCagPA1XArcAtQGW4Li2VxnJoUECJiGS8QQdJmFk28DV3v3iM6hkxjeITEYmGQVtQ7t4NHD9GtYyKkvwc2jp76OzWl3VFRDJZIl/UfdLMbgf+SDBdEQDufmvSqhqBkljwlhpaOxlfnJ/iakREZLgSCagYwdx7J8etc4JzUmlnXFEeALtaFFAiIpkskYD6lbs/HL/CzI5LUj0jNr4oCKW6pnZmVxenuBoRERmuREbx/STBdWlhfHHQgqpr7khxJSIiMhIDtqDM7FjgTUBV78zloVIgO9mFDVdfQDW1p7gSEREZicG6+PKA4nCb+JnLGwiurJuWKgqDgNrZpBaUiEgmGzCg3H0psNTMrnX3DWNY04jkZGcxrjCXuma1oEREMlkigyTyzexKYEb89u5+8oDPSLHxxfnUqQUlIpLREgmoPwJXAL8CMuJKgJXFedQ2qgUlIpLJEgmoLnf/RdIrGUWTywpYvrYu1WWIiMgIJDLM/C9m9gkzm2RmFb23pFc2AjXjCtjW0EaXpjsSEclYibSgLgh/fiFunQOzRr+c0VFTXkCPw7aGNqaMK0x1OSIiMgxDBpS7zxyLQkbT5PICALbsVkCJiGSqAbv4zOyLcfffs9dj301mUSNVMy4IqM27W1JciYiIDNdg56DOjbv/lb0eOy0JtYyayWVhQO1qTXElIiIyXIMFlA1wv7/ltFKQl01VST4b6tSCEhHJVIMFlA9wv7/ltHNQVRFraptSXYaIiAzTYIMkjjCzBoLWUkF4n3A5lvTKRmh2dTG3P7UFd8csrRt8IiLSj8Hm4kvbGcsTMbuqmIa2Lmqb2qkuSfs8FRGRvSTyRd2MdFB4scI1O9TNJyKSiSIbULMVUCIiGS2yATWxNEZ5YS6rtjQMvbGIiKSdIQPKzIrMLCu8P9fMlphZbvJLGxkzY0FNGc9s2pPqUkREZBgSaUEtA2JmVgP8HTgfuDaZRY2Ww6eU8dL2Rto6M+IqISIiEieRgDJ3bwHOAn7u7u8BDk1uWaNjQU05XT3O6q3q5hMRyTQJBZSZHQu8H7gjXJcRQ9APn1IGoG4+EZEMlEhAfYZgLr4/ufvzZjYLuD+5ZY2OSWUxasoLeHSdLl4oIpJpErncxlJgKUA4WGKnu1+c7MJGg5lxzKwKHnixVjNKiIhkmERG8d1gZqVmVgQ8B6wysy8M9by452eb2ZNm9teRFDpci2eNp765g5e26/tQIiKZJJEuvvnu3gC8C/gbMJNgJF+iPg2sHkZto+LYWeMBWL5W3XwiIpkkkYDKDb/39C7gdnfvJMHZzM1sCvAO4FfDL3FkplYUMq2ikKUv1aaqBBERGYZEAuqXwHqgCFhmZtOBRMdt/x/wRaBnoA3M7EIzW2FmK2prkxMipxxSzUNrdtLc3pWU1xcRkdE3ZEC5+4/dvcbdT/fABuCkoZ5nZu8Edrj7yiFe/0p3X+Tui6qqqhKvfD+8df4EOrp6ePDlnUl5fRERGX2JDJIoM7Mf9LZyzOz7BK2poRwHLDGz9cBNwMlm9tuRlTs8b5hRQWksh3tWbU/F7kVEZBgS6eK7BmgEzglvDcCvh3qSu3/F3ae4+wzgXOAf7n7eCGodttzsLE45ZAL3rt5Oe5emPRIRyQSJBNRB7n6pu68Nb98CZiW7sNH2rqNq2NPayf0v7Eh1KSIikoBEAqrVzI7vXTCz44DW/dmJuz/g7u/c3+JG0/GzK6kuyefmlZtTWYaIiCRoyJkkgI8D15lZWbi8C7ggeSUlR3aW8a9H1XD1Q+uoa2pnfHF+qksSEZFBDNqCCqc2OtjdjwAOBw5396Pc/ZkxqW6Unb1wCl09zk2Pb0x1KSIiMoRBA8rdewi+x4S7N4QzSmSsORNKOH52Jdc/soHO7gG/miUiImkgkXNQ95rZ581sqplV9N6SXlmSfPj4GWxraONvz21LdSkiIjKIRM5B/Vv485Nx65wMHMkHcOLcamZWFnHVsrWccfgkzXAuIpKmEplJYmY/t4wMJ4CsLOOiEw/i2c17uHe1hpyLiKSrAQPKzM4zs31mLTez883sfcktK7nOOqqG6eML+cE9L9HTk9C8tyIiMsYGa0F9CvhTP+tvBS5JTjljIyc7i0+fMofVWxu487mtqS5HRET6MVhA5br7Plf5c/dmIDd5JY2NM4+sYd7EEv77zhdo7dD0RyIi6WawgCoIr6L7OmZWAuQlr6SxkZ1lfHPJoWze3coVS19JdTkiIrKXwQLqauDm8PpPAJjZDIKZya9OblljY/Gs8ZxxxGSuWPoKG+qaU12OiIjEGTCg3P1/gdsILlJYZ2Z1wFLgr+5++VgVmGxfO/0Q8nKy+MIfn9GACRGRNDLUTBJXuPt0YAYww92nu/svxqSyMTKxLMalZxzKY+vruebhdakuR0REQonMJIG7N7p7Y7KLSZV3H13DqYdM4PK7X+TFbZF9myIiGSWhgIo6M+O7Zx1GSSyXi367ksa2zlSXJCJywFNAhapLYvzsfUexob6FL93yDO46HyUikkpDBpSZrTSzT5rZuLEoKJWOmTWeL512MHc+u42fP6Ch5yIiqZRIC+rfgMnA42Z2k5m9zSI8w+rH3jyLM4+czOV3v8ifn9TVd0VEUiWRyWLXuPvXgLnADcA1wAYz+1YmX3ZjIGbGZWcfzuJZFXzh5qf555qdqS5JROSAlNA5KDM7HPg+cDlwC/AeoAH4R/JKS538nGx+ef4iZlYW8bHrVrBifX2qSxIROeAkdA4K+CHwOMEl3y9290fd/fvA2mQXmCplBblc/5FjmFAa44JrHmPlBoWUiMhYGjSgzCwLuMXdT3H3G9y9Pf5xdz8rqdWl2ITSGDdeuJjq0hgXXPM4j61TSImIjJWhZpLoASIdQkOZUBrjxo8tpro0n/OufpS7dHkOEZExkcg5qHvN7PNmNtXMKnpvSa8sjUwsi3Hzx9/EoZNLueh3T3D9I+tTXZKISOQlOsz8k8AyYGV4W5HMotJRRVEeN3x0MafMq+Ybtz3Ppbc9R2d3T6rLEhGJrJyhNnD3mWNRSCYoyMvmivMW8j93vcBVD65j9dZGfvr+o6guiaW6NBGRyEl0mPlhZnaOmX2g95bswtJVTnYWX3vHfH507pE8s3k3Z/zkIQ2eEBFJgkSGmV8K/CS8nQRcBixJcl1p78wja7j1ouMoyM3m3Csf4fK7X1CXn4jIKEqkBXU2cAqwzd0/BBwBlCW1qgwxf3Ipd1z8Zs5eOIWf3f8KZ//in6ytbUp1WSIikZBIQLWGw827zKwU2AFMTW5ZmaMoP4fLzj6Cn7//aNbXtfD2Hz3Izx9Yo9aUiMgIJRJQK8ysHLiKYATfE8AjSa0qA52+YBJ//+wJnHRwNZfd9SJLfvowT2/cneqyREQylu3PdY/MbAZQ6u7PJKOYRYsW+YoVmT+C/a7ntvH/bnuOnU3tvO+YaXzurQdTUZSX6rJERNKCma1090VDbZfoKL4aM3sTMA0oN7MTRlpglJ122ETuveQtnL94Ojc+tpETL7+fqx9aR0eXuv1ERBI1ZAvKzP6H4Mu6q4DucLW7+6iP5ItKCyrey9sb+fYdq1n2Ui2zKov44mnzeNuhE4jwJbVERAaVaAsqkYB6kWAW8/ZBN9z3eVOB64AJgANXuvuPBntOFAMKwN154MVavnPHKl6pbeawmlIueevBnHhwlYJKRA44o9nFtxbIHUYNXcAl7j4fWAx80szmD+N1Mp6ZcdK8au7+zAl8/z1HsKe1kw9d+zhn/eKfPPhyLftzHlBE5EAx5FRHQAvwlJndB/S1otz94sGe5O5bga3h/UYzWw3UEHQVHpBysrN498IpLDlyMjev3MSP73uZ869+jAU1Zfz7W2Zx2qETyclO6LSgiEjkJdLFd0F/6939NwnvJBj9tww4zN0bBtouql18A2nv6ubWJzZz5bK1rNvZzLSKQj725pmcvXAqBXnZqS5PRCQpRu0c1CgUUgwsBf7L3W/t5/ELgQsBpk2btnDDhg1JrScddfc496zazhVLX+GpjbsZV5jLOYumct7i6UytKEx1eSIio2rEAWVmf3D3c8zsWYJBDq/j7ocnUEQu8Ffgbnf/wVDbH2gtqL25O4+tq+fXD6/nntXb6XHnxLlVfODYGbxlbhVZWRpQISKZbzQCapK7bzWz6f097u6DNnUsGJ72G6De3T+TQM0HfEDF27qnlRsffZUbHtvIzqZ2plYUcM7CqZy1cAo15QWpLk9EZNiS0sVnZpVAnSfwJDM7HngQeBbo/YbqV939zoGeo4DaV0dXD3c/v43fPbqB5WvrMYPjDqrk7IVTeNuhE3WuSkQyzmi0oBYD3wPqgW8D1wOVBEPTP+Dud41euQEF1OA21rdwyxObuHnlJjbtaqU4P4d3LJjEmUdO5phZ48lWF6CIZIDRCKgVwFcJLq1xJfB2d19uZvOAG939qNEsGBRQierpcR5bX8/NKzdx57NbaenoprI4n9MXTOQdCybxhhkVOl8lImlrNALqKXc/Mry/2t0PiXvsSQVUemjt6Ob+F3fw12e28I8XdtDW2cOE0nxOXzCJdyyYxFHTxqllJSJpJdGAGuyLuvEzm7bu9ZimPkgTBXnZnL5gEqcvmERzexf3vbCDvz69hd89+iq/fng944vyOHleNafOn8Cb51RSmJfId7NFRFJvsBZUN9AMGFBAMKME4XLM3Ycz/dGg1IIaPY1tnSx9qZZ7Vm3n/hd20NDWRV5OFsfPruTUQyZw6iHVVJfGUl2miByA0uaLuvtDAZUcnd09PL6+nntX7eCe1dvYWB80iA+ZVMoJcyo5YW4VC6ePI5arEYEiknwKKOmXu/PyjibuW72DZS/VsmJDPZ3dTiw3i8WzxvPmOVW8ZW4lB1UVa6Z1EUkKBZQkpLm9i0fX1bHspZ0se6mWtTubAZhUFuPYWeNZHN6mVhQosERkVIzGIAk5ABTl53DyvAmcPG8CEHzX6sGXd/LQmlqWvlTLrU9uBoLACsKqgsWzxjOtolCBJSJJpRaUDMjdWbOjieXr6lm+to5H19axs6kDCALrjTMrWDh9HEdPG8e8iSW6VIiIJERdfDLq3J1XaptYvraeR9bWsWJ9PdsbgkuEFeZlc8SUco6eXs7C6eM4auo4xhXlpbhiEUlHCihJOndny542Vm7YxRMbdrFywy5WbW2guyf4NzWrqoiF08Zx5LRyDq8p5+CJJeTlqJUlcqBTQElKtHR08cymPX2h9cSru9jV0glAXnYW8yaVcPiUMg6vKWfBlDLmVBera1DkAKOAkrTg7mysb+WZzbt5dtMentm0h+c276GxvQuAWG4W8yeVcviUchbUlDF/cimzq4vJVWiJRJYCStJWT4+zvq6ZZzcHgfXspj08t2UPLR3dAORmG7OrS5g/qZRDJvX+LNU5LZGIUEBJRunucdbWNrFqawOrtjawemsjq7c2UNvY3rfNxNIYh0wq4ZBJpcyfXMq8iaXMGF+oLkKRDKPvQUlGyc4y5kwoYc6EEs48sqZvfW1jO6u3NsTdGln28s6+gRh52VnMqioKnltdzNwJxcyZUML0CgWXSKZTQElaqyrJp6qkihPmVvWta+vsZs2OJlZvbWDNjiZe2t7IExt28Zent/Rto+ASyXwKKMk4sdxsDqsp47Castetb27v6gusgYIrN9uYPr6IWZVFzKwq4qDKYmZWBcsVRXmaHUMkjSigJDKK8nM4Ymo5R0wtf9363uB6eUcTL+9oZG1tM2t3NnP/izvo7H7tHGxZQS4zK4uYFQbWrKpiZlUVMWN8kWZ6F0kBBZRE3kDB1dXdw+bdrX2Btba2iXU7m/nnmjpufWJz33ZmMLmsgBmVhUyrKGL6+EKmVxQybXwh0yoKKYmN+qXRRAQFlBzAcrKzmD6+iOnjizhpr8ea27tYt7OZdTubwwBrYkNdC3c/v4365o7XbVtRlMe0isK44HotxKqvcz3vAAAMbUlEQVRK8tVtKDJMCiiRfhTl5/R7ngugoa2TV+taeLW+hQ11Lbxa38yGuhZWrA/Od/XEfXOjIDebaWFra8q4AqaMC37WlBcwdVwhpQU5CjCRASigRPZTaSx3wPDq6Aq6DTfUNfcFWHBr5uE1O/u+jNyrOD8nDK4gtKaMK6QmXJ4yrpBxhbkKMDlgKaBERlFeThYzK4uYWVm0z2Puzu6WTjbtamXz7hY27WqNu7Xw6Nr6vimgehXkZgfh1RdihUwujzGxNMbk8gKqS/PJz9EADokmBZTIGDEzxhXlMa4ojwVT9m19Aexp7WTTrhY2h8G1eXcQXpt3t/LUxt3sDifejVdZnP+60JpYFmNSWYxJZQVMKosxoTSmWeQlIymgRNJIWUEuZQVlHDq5/wBrbu9i6542tu5pDX7ufu3++rpmHllbR2Pb61thZmGIlcXC8CoIAq2sgImlMSaU5lNdEqMgTy0xSS8KKJEMUpSfw+zqYmZXFw+4TWNbJ9v2tPUF2ZbdbWzb08aWPcGQ+ofX1NG0V1ciQEkshwlhYE0oiVHde780RnVJ8LOqJF/fCZMxo4ASiZiSWC4lsVzmTCgZcJuGMMS2N7SxvaGd7Q1t1Da2h8ttPLqunh2Nba/7InOv8sLcMMCClldviE0ozac6DLPKYgWZjJwCSuQAVBrLpTSWy9xBQszd2dXSyfaGNnaE4bUjLtC2N7bzyo6d7Ghsp6tn3yAryc+hKgyr4Gde33LfunC9BnpIfxRQItIvM6OiKI+KojwOmTTwdj09Tn1LR1/rq7axnZ1NHdQ2tlPb1M7OxnZWb2tgZ2M7DW37di0ClMZyqCzJp6o4v+/n3qFWVZLP+KJ8Dfg4gCigRGREsrKsr1U00OCOXm2d3dQ1d7CzsT0MsuDWF2pN7aze0sCypvZ9Bnv0Ko3lML44vy88x/f+LM7vux8sBz/VOstcCigRGTOx3GxqyoMvJQ+lrbM7DLCOvjCrbWynvrmDuuYO6pra2VjfwlMbd7OruaPfbkYIuhoriocIs6J8KoqDx3XuLH0ooEQkLcVys8OpoQqH3NbdaWjtYmdzGGBNHdQ3d1DfHARccL+DzbvbeHbzHuqbO/odAAJQlJcdBFphHuWFeYwrzKW8MAiy3vvjCvMoL8xlXFGwnYboJ4cCSkQynplRVphLWWEuB1UNvb2709DW1RdidU1Bq+y1cGunvqWTXS0drN3ZxO7mzn1m+YiXn5P1WmgV5jGuKPy517rywiDQxhXmURLLIStL01gNRgElIgccMwu/FJ3b77RU/eno6mF3awe7WzrZ1dzBrpZOdrd0UN+y77oXtzX23R+g55Esg/L4ACvMo6wgl/LC3Nf9LC3IpTystfd2oFwVOqkBZWanAT8CsoFfufv3krk/EZFkycvJorokRnVJLOHn9PQ4jW1d7GrpYFcYZPXNr92P/7lpVwurtnSyp7WT5r0mFd5bcX7O6wJrn0ArjFtfkNd3P9NabUkLKDPLBn4GvBXYBDxuZre7+6pk7VNEJJ1kZb3W9TiDxFpqELTWGtqCsNrd0klDa+/9Dva0dgX3Wzv61r9S2xSu66Sjq2fA1zULvgNXtleIxd9KC3L7tiktyAm+M1eQS2ksZ8xbbslsQb0RWOPuawHM7CbgTEABJSIyiLycrL6h+/urrbO7L9j2vC7YgqDb3Rq/vpPNu1r7wq17oP7IUFFeNue+cRrfeOf84b61/ZLMgKoBNsYtbwKO2XsjM7sQuBBg2rRpSSxHRCT6YrnZxHKzmVCaeFckBANHWjq6aWjrpCFspTW0dva15HrXHT7ATPzJkPJBEu5+JXAlwKJFiwaPbxERSQozoyg/h6L8HCaNXQYNKpkdipuBqXHLU8J1IiIiQ0pmQD0OzDGzmWaWB5wL3J7E/YmISIQkrYvP3bvM7D+AuwmGmV/j7s8na38iIhItST0H5e53Ancmcx8iIhJNB8bXkUVEJOMooEREJC0poEREJC0poEREJC2Ze/p8N9bMaoENI3yZSmDnKJQTJTom+9Ix2ZeOyb50TPY1GsdkursPeWGUtAqo0WBmK9x9UarrSCc6JvvSMdmXjsm+dEz2NZbHRF18IiKSlhRQIiKSlqIYUFemuoA0pGOyLx2TfemY7EvHZF9jdkwidw5KRESiIYotKBERiQAFlIiIpKWMDSgzO83MXjSzNWb25X4ezzez34ePP2pmM8a+yrGTwPH4nJmtMrNnzOw+M5ueijrH2lDHJW67d5uZm1nkhxQnckzM7Jzw38vzZnbDWNc41hL4/zPNzO43syfD/0Onp6LOsWJm15jZDjN7boDHzcx+HB6vZ8zs6KQU4u4ZdyO4fMcrwCwgD3gamL/XNp8Argjvnwv8PtV1p/h4nAQUhvcvivLx2J/jEm5XAiwDlgOLUl13qo8JMAd4EhgXLlenuu40OCZXAheF9+cD61Ndd5KPyQnA0cBzAzx+OvA3wIDFwKPJqCNTW1BvBNa4+1p37wBuAs7ca5szgd+E928GTjEzG8Max9KQx8Pd73f3lnBxOcEVjqMukX8nAN8G/gdoG8viUiSRY/Ix4GfuvgvA3XeMcY1jLZFj4kBpeL8M2DKG9Y05d18G1A+yyZnAdR5YDpSb2aTRriNTA6oG2Bi3vClc1+827t4F7AHGj0l1Yy+R4xHvIwR//UTdkMcl7JqY6u53jGVhKZTIv5W5wFwze9jMlpvZaWNWXWokcky+CZxnZpsIrnH3qbEpLW3t72fOsCT1goWSfszsPGAR8JZU15JqZpYF/AD4YIpLSTc5BN18JxK0tJeZ2QJ3353SqlLrvcC17v59MzsWuN7MDnP3nlQXFmWZ2oLaDEyNW54Srut3GzPLIWiW141JdWMvkeOBmZ0KfA1Y4u7tY1RbKg11XEqAw4AHzGw9QV/67REfKJHIv5VNwO3u3unu64CXCAIrqhI5Jh8B/gDg7o8AMYJJUw9UCX3mjFSmBtTjwBwzm2lmeQSDIG7fa5vbgQvC+2cD//Dw7F4EDXk8zOwo4JcE4RT1cwq9Bj0u7r7H3SvdfYa7zyA4N7fE3Vekptwxkcj/nT8TtJ4ws0qCLr+1Y1nkGEvkmLwKnAJgZocQBFTtmFaZXm4HPhCO5lsM7HH3raO9k4zs4nP3LjP7D+BughE417j782b2n8AKd78duJqgGb6G4GTfuamrOLkSPB6XA8XAH8OxIq+6+5KUFT0GEjwuB5QEj8ndwL+Y2SqgG/iCu0e19yHRY3IJcJWZfZZgwMQHI/wHL2Z2I8EfKZXhebdLgVwAd7+C4Dzc6cAaoAX4UFLqiPAxFhGRDJapXXwiIhJxCigREUlLCigREUlLCigREUlLCigREUlLCiiRfphZt5k9ZWbPmdkfzaxwBK91opn9Nby/ZIhZ1cvN7BNxy5PN7Obh7lskkymgRPrX6u5HuvthQAfw8fgHwy8o7vf/H3e/3d2/N8gm5QQz8fduv8Xdz97f/YhEgQJKZGgPArPNbEZ4zaDrgOeAqWb2L2b2iJk9Eba0iqHv+kIvmNkTwFm9L2RmHzSzn4b3J5jZn8zs6fD2JuB7wEFh6+3ycJ/PhdvHzOzXZvZseF2ik+Je81Yzu8vMXjazy8L12WZ2bdgKfDb8kqlIxsjImSRExko4j+PbgbvCVXOAC9x9eTgN0NeBU9292cy+BHwuDIirgJMJvmn/+wFe/sfAUnf/VzPLJpjp48vAYe5+ZLj/GXHbfxJwd19gZvOAv5vZ3PCxI4GjgHbgRTP7CVAN1IStQMysfISHQ2RMqQUl0r8CM3sKWEEwD9vV4foN4fVvIJhcdj7wcLjtBcB0YB6wzt1fDqfD+e0A+zgZ+AWAu3e7+54hajq+97Xc/QVgA8E8eQD3hXMLtgGrwjrWArPM7CfhJTMaEn/7IqmnFpRI/1p7WzG9wjkMm+NXAfe4+3v32u51zxsj8bPTdwM57r7LzI4A3kZwDu0c4MMpqE1kWNSCEhm+5cBxZjYbwMyKwi63F4AZZnZQuN17B3j+fcBF4XOzzawMaCS4DEh/HgTeH24/F5gGvDhQcWEXZJa730LQFXn0frw3kZRTQIkMk7vXElzs8EYzewZ4BJgXdrNdCNwRDpIY6PImnwZOMrNngZXA/HDW8IfDgQ2X77X9z4GscPvfE8yoPdh1vWoIrnX1FEHX4FeG9UZFUkSzmYuISFpSC0pERNKSAkpERNKSAkpERNKSAkpERNKSAkpERNKSAkpERNKSAkpERNLS/wdpOHJ0nM//TwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_bin_ce = [bin_ce(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot for binary cross entropy\n",
    "ax1.plot(pred, loss_bin_ce)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Binary Cross Entropy Loss/ Log Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "\n",
    "fig.tight_layout()\n",
    "fig.savefig()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Focal loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "metadata": {},
   "outputs": [],
   "source": [
    "def focal(true, pred, gamma):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: binary cross entropy loss\n",
    "    \"\"\"\n",
    "    loss = np.where(true==1, (1-pred)**gamma*(np.log(pred)), pred**gamma*(np.log(1-pred)))\n",
    "    return -np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "gammas = [0, 0.5, 1, 2, 5]\n",
    "losses_focal = [[focal(target[i], pred[i], gamma) for i in range(len(pred))] for gamma in gammas]\n",
    "\n",
    "# plot for binary cross entropy\n",
    "for i in range(len(gammas)):\n",
    "    ax1.plot(pred, losses_focal[i], label = gammas[i])\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Focal Loss')\n",
    "ax1.set_title(\"Loss with Predicted values (Color: Gammas)\")\n",
    "ax1.legend()\n",
    "\n",
    "# make right and top lines invisible\n",
    "ax1.spines['top'].set_visible(False)    # Make the top axis line for a plot invisible\n",
    "ax1.spines['right'].set_visible(False) # Make the right axis line for a plot invisible\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Hinge loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [],
   "source": [
    "def hinge(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: negative log likelihood loss\n",
    "    \"\"\"\n",
    "    loss = np.max((0, (1 - pred*true)))\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_hinge = [hinge(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot for hinge\n",
    "ax1.plot(pred, loss_hinge)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Hinge Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Square loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sq_loss(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: negative log likelihood loss\n",
    "    \"\"\"\n",
    "    loss = (1 - pred*true)**2\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_sq = [sq_loss(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot for hinge\n",
    "ax1.plot(pred, loss_sq)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Square Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Logistic loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [],
   "source": [
    "def log_loss(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: negative log likelihood loss\n",
    "    \"\"\"\n",
    "    loss = np.log(1 + np.exp(-(pred*true)))/np.log(2)\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots(1,1)\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_log_loss = [log_loss(target[i], pred[i]) for i in range(len(pred))]\n",
    "\n",
    "# plot for hinge\n",
    "ax1.plot(pred, loss_log_loss)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Logistic Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Exponential loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax1 = plt.subplots()\n",
    "\n",
    "# array of same target value 10000 times\n",
    "target = np.repeat(1, 10000) # considering prediction to be 1\n",
    "pred = np.arange(0,1, 0.0001) # all predictions b/w 0 and 1 for 10k values\n",
    "\n",
    "# calculating loss function for all predictions. \n",
    "loss_exp = [expo(target[i], pred[i], 100) for i in range(len(pred))]\n",
    "\n",
    "# plot for exponential loss\n",
    "ax1.plot(pred, loss_exp)\n",
    "ax1.set_xlabel('Predictions')\n",
    "ax1.set_ylabel('Exponential Loss')\n",
    "ax1.set_title(\"Loss with Predicted values\")\n",
    "fig.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Kullback–Leibler divergence"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def kld(true, pred):\n",
    "    \"\"\"\n",
    "    true: array of true values    \n",
    "    pred: array of predicted values\n",
    "    \n",
    "    returns: KL divergence loss\n",
    "    \"\"\"\n",
    "    loss = pred*(np.log(pred) - true)\n",
    "    return np.sum(loss)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Embedding loss (have 2 inputs and compare them)\n",
    "\n",
    "* Hinge embedding criteria\n",
    "* L1 Hinge embedding\n",
    "* Cosine distance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Miscelaneus losses\n",
    "\n",
    "* Haversine distance\n",
    "* Weighted average of muliple losses"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
